第
6
章
重複結構
參考答案
6-1
For
…
Next
迴圈敘述
舉一反三
配合課本第203頁若要計算5! = 1 × 2 × 3 × 4 × 5 ,上述程式應如何修改? 提示:sum的初始值須設 定為1,因為sum若為0,乘以任何數皆為0
解 請參考教資光碟中的方案檔 "ch6-1a_1.sln"
舉一反三
配合課本第204頁若要計算2 + 4 + 6 + 8 + 10,上述程式應如何修改? 提示:更改i的初始值與終止 值
解 請參考教資光碟中的方案檔 "ch6-1b_1.sln"
若要將0 ~ 50中7的倍數之數值加總,上述程式應如何修改? 提示:增值為7;加總 的答案為196
解 請參考教資光碟中的方案檔 "ch6-1b_2.sln"
舉一反三
配合課本第205頁若希望能顯示6的正因數共有多少個,上述程式應如何修改? 提示:在If…Then敘述中
加入count = count + 1,來計算個數
解 請參考教資光碟中的方案檔 "ch6-1d_1.sln"
舉一反三
配合課本第206頁若希望計算段考成績的 及格 數,上述程式應如何修改? 提示:更改If…Then敘
述的條件式
解 請參考教資光碟中的方案檔 "ch6-1e_1.sln"
▍
▍
●
●
▍
馬上練習
配合課本第207頁( B )1. 下列Visual Basic程式片段執行後,會出現幾個#號?
For I = 19 To 1 Step -3 Debug.Print("#")
Next I
(A)6 (B)7 (C)8 (D)9 ≒統測
( C )2. 執行下列程式後,X的值為何?
10 S = 0 20 X = 20
30 For X = 1 To 5 40 S = S + X 50 Next X
(A)20 (B)5 (C)6 (D)15 統測
( D )3. 下列Visual Basic迴圈執行完畢後,變數k的值為何?
For k = 1 to 10 Debug.Print(k) k = k + 2
Next k
(A)0 (B)10 (C)11 (D)13 ≒統測
( A )4. 執行下列Visual Basic語言片段程式後,S值為何?
S = 0
For K = 1 to 4
S = S + (K Mod 2)
Next K
(A)2 (B)4 (C)6 (D)10 ≒統測
( C )5. 下列Visual Basic程式執行後,C值為何?
C = 2
FOR I = 1 TO 10
IF I MOD 2 = 0 THEN C = C + I
NEXT I
(A)57 (B)55 (C)32 (D)30 ≒統測
下課想
2 配合課本第213頁若 要 增 加 找 出 最 低 分 及 計 算 平 均 分 數 的 功 能 , 上 述 程 式 應 如 何 修 改 ? 提 示 : 設 定 變 數
min = 100,再利用If…Then敘述比較score是否小於min,以找出最低分;計算平均分 數的公式:sum / 5
成果預覽:
▍
Â
解 請參考教資光碟中的方案檔 "Ans6-1a_1.sln"
6-1
練習
配合課本第213頁一、選擇題
( D )1. 下列Visual Basic程式片段執行後,Sum值為何?
(A)12 (B)8 (C)10 (D)6 ≒統測
Sum = 0
For I = 1 to 3 Sum = I * 2 Next I
( A )2. 執行完下列Visual Basic程式片段後,會在即時運算視窗顯示幾個星號?
Dim A, B As Integer B = 10
For A = 1 To B Step 1
If (A MOD 2 = 0) Then Debug.Print("*")
Next A
(A)5 (B)6 (C)9 (D)10 ≒統測
▍
( D )8. 程式 六 執行後,x的值為何? (A)1 (B)3 (C)10 (D)256 ≒技競 進階
( B )3. 下列Visual Basic程式 一 具有什麼功能?
(A)計算1 + 2 + … + 10的總和 (B)計算1 + 4 + 7 + 10的總和
(C)計算1 + 3 + 5 + 7 + 9的總和 (D)計算1 * 3 * 5 * 7 * 9的總和
s = 0
For i = 1 To 10 Step 3 s += i
Next MsgBox(s)
sum = 0 : a = 20 For I = 1 To 5 sum = sum * I Next I
b = a + sum
程式 一 程式 二
( B )4. 求執行程式 二 後,b值的結果為何? (A)0 (B)20 (C)120 (D)140 ≒統測
( D )5. 在Visual Basic程式 三 中,若想使程式執行完成後,i值為5,應在空白處填 入何值? (A)Exit For i = 5 (B)Exit If i = 5 (C)If i = 5 Then Exit (D)
If i = 5 Then Exit For ≒技競
Dim i
For i = 1 To 10
Next
N = 0
For I = 1 To 50
If I Mod 15 = 0 Then N = N + 1
End If Next I
程式 三 程式 四
( B )6. 程式 四 執行後,N值為何?
(A)N = 2 (B)N = 3 (C)N = 4 (D)N = 5 ≒統測
( B )7. 下列程式 五 執行後,p的值為何? (A)28 (B)56 (C)70 (D)84 ≒技競
Dim i, p As Integer p = 1
For i = 1 To 5
p = p * (8 - i + 1) / i Next i
x = 1 : y = 10 For i = 1 To 2 x = x + x Next i
For i = 1 To 2 x = x * x Next i
( A )9. 執行下列Visual Basic程式 七 後,即時運算視窗顯示的結果為何 "△" 表示
空格 ?
(A) 1
△2
△△3
△△△4
△△△△5
(B) △1
△2
△3
△4
△5
(C) 1 12 123 1234 12345 (D) 1 22 333 4444 55555
( D )10. 在Visual Basic語言中,若要利用程式 八 計算出(1 * 2) - (2 * 3) + (3 * 4)
-(4 * 5) + (5 * 6)的值,則空格中要填入什麼內容?
(A)-1 + S (B)S - 2 (C)N - S (D)-1 * S ≒技競
二、多元練習題
1. 下面是2個使用For…Next敘述的程式片段,請依照提示,在空格處填上正確的起始
值 終止值或增值
(1) 計算全班40位同學的國文總平均
Dim sum, chi As Integer For i = 1 To 40
chi = InputBox("請輸入第 " & i & " 位同學的國文成績:") sum = sum + chi
Next
MsgBox("國文總平均為:" & sum / 40)
(2) 計算1/2 + 1/4 + … + 1/10的總和
For i = 2 To 10 Step 2
sum = sum + 1 / i
Next
MsgBox(sum) Dim n As String For i = 1 To 5
Debug.Print(n & i) n = n & " "
Next
T = 0 S = 1
For N = 1 To 5
T = T + S * N * (N + 1) S =
Next N
2. 製作一個計算累加值的程式,並利用文 方塊 TextBox 讓使用者自行輸入迴圈控制 變數的起始值 終值與增減值,最後將專案儲 為 "Ans6-1b.sln"
成果預覽:
提示: (1) 在表單上佈建4個Label 標籤 4個TextBox 文 方塊 及1個Button
按鈕 控制 ,並參照上圖所示的預覽圖設定Label及Button的Text屬 性
(2) 雙按Button1控制 ,在按鈕的Click事件中撰寫程式
(3) 設定For…Next的敘述為For i = 起始值 To 終值 Step 增減值,累加結果 為sum = sum + i
解 請參考教資光碟中的方案檔 "Ans6-1b.sln"
6-2
While
…
End While
迴圈敘述
舉一反三
配合課本第218頁如果要計算m的n次方,上述程式應如何修改? 提示:將迴圈內的敘述pow = pow * 2
改為pow = pow * m
解 請參考教資光碟中的方案檔 "ch6-2b_1.sln"
舉一反三
配合課本第219頁若 要 在1 ~ n中 , 顯 示 能 被3整 除 , 但 不 能 被7整 除 的 整 數 , 上 述 程 式 應 如 何 修 改 ? 提 示:修改If…Then敘述的條件式
解 請參考教資光碟中的方案檔 "ch6-2d_1.sln"
▍
▍
TextBox4 Button1
馬上練習
配合課本第220頁( B )1. 下列Visual Basic程式執行後,SUM值為何?
(A)10 (B)20 (C)30 (D)90 ≒技競
Dim I As Integer, SUM As Integer I = 0 : SUM = 0
While I < 10 SUM = SUM + I I = I + 2 End While
( A )2. 下列Visual Basic程式執行後,S值為何?
(A)4 (B)6 (C)8 (D)10 ≒統測
Dim S As Integer Dim I As Integer S = 0 : I = 0 While (I < 10) S = S + 1 I = I * 2 + 1 End While
( C )3. 使用Visual Basic VB 程式語言執行以下程式碼後,T值為何?
(A)18 (B)22 (C)24 (D)25 ≒統測
T = 0 S = 1
While S <= 3 S = S + 1
T = T + S * (S - 1) End While
下課想
2 配合課本第225頁若 要 限 制 使 用 者 只 能 猜5次 , 上 述 程 式 應 如 何 修 改 ? 提 示 : 在 迴 圈 內 利 用c o u n t值 來 計 算 使 用 者 已 猜 過 幾 次 數 , 並 在 迴 圈 的 條 件 式 加 入 當c o u n t < 5才 執 行 迴 圈 ; 新 增
If…Then…Else敘述,判斷i <> 5時,才顯示猜對的訊息
成果預覽:
▍
Â
5次內猜對
第5次還沒猜對
解 請參考教資光碟中的方案檔 "Ans6-2a_1.sln"
6-2
練習
配合課本第225頁一、選擇題
( A )1. 下列Visual Basic程式片段,若在輸入資料的訊息交談視窗中,輸入的數值 在下 列程式的第2行 為5,請問程式執行後,K值的結果為何?
(A)5 (B)6 (C)0 (D)10 ≒統測
<第 1 行> K = 0
<第 2 行> Q = InputBox("輸入數值")
<第 3 行> While K < 5
<第 4 行> Q = K + 1
<第 5 行> K = K + 1
<第 6 行> End While
( C )2. 下列Visual Basic程式片段執行後,B值為何? (A)5 (B)7 (C)11 (D)15
A = 1 : B = 5 While B < 10 B = B + 2 * A A = A + 1 End While ▍
( A )3. 下列程式執行後,Z值為何? (A)1024 (B)512 (C)1000 (D)256 ≒技競
While Z <= 1000
Y = Y + 1 : Z = 2 ^ Y End While
( B )4. 右列Visual Basic程式片段具有什麼功能?
(A)計算1 + 2 + 3 +… + 50的總和
(B)計算1 + 2 + 3 + … + 49的總和
(C)計算2 + 4 + 6 + … + 48的總和
(D)計算1 + 3 + 5 + … + 49的總和 ≒技競
( B )5. 執行以下Visual Basic程式 一 ,X值為何? (A)0 (B)3 (C)6 (D)9 ≒技競
進階
Dim X, Y, Z As Integer X = 15
Y = 9
While (Y > 0) Z = X Mod Y X = Y
Y = Z End While
Dim t As Integer = 1 Dim s As Integer = 1 While s <= 3
t = s + t * (t - 1) s = s + 1
End While t = t + s
程式 一 程式 二
N = 0 : I = 0 While I < 50
If I Mod 13 = 1 Then N = N + I
End If I = I + 3 End While
X = 1 Sum = 0 While X < 20
If X < 10 Then Sum = Sum + X End If
X = X * 2 End While
程式 三 程式 四
( C )8. Visual Basic程式 四 執行後,Sum值為何?
(A)7 (B)10 (C)15 (D)31 ≒統測
( C )6. 程式 二 執行後,t的值為何? (A)4 (B)5 (C)9 (D)24
( D )7. 執行下列Visual Basic語言片段程式 三 後,N值為何?
(A)N = 82 (B)N = 78 (C)N = 54 (D)N = 27 ≒統測
S = 0 X = 1
( C )10. 執行Visual Basic程式 六 後,請問s值為何?
(A)20 (B)171 (C)190 (D)380 ≒技競
二、實作題
1. 下列Visual Basic程式片段是利用For…Next迴圈敘述,將使用者輸入的數值n之正因 數,顯示在即時運算視窗中 請將程式中的迴圈敘述改以While…End While來撰寫, 最後將專案儲 為 "Ans6-2b.sln"
Dim n As Integer
n = InputBox("請輸入任一整數") For i = 1 To n
If n Mod i = 0 Then Debug.Print(i) Next
解 請參考教資光碟中的方案檔 "Ans6-2b.sln"
2. 製作一個可依據使用者輸入的繩子長度,來計算繩子需對折幾次後,長度才會小於等
於20公分的程式,最後將專案儲 為 "Ans6-2c.sln"
成果預覽:
( B )9. 執行VB程式 五 ,出現提示符號時輸入數值100,則輸出結果為:
(A)5 (B)6 (C)64 (D)128 ≒統測
n = 0
a = InputBox("input data") While a > 0
a = a – 2 ^ n n = n + 1 End While
Debug.Print(n - 1)
Dim c As Integer Dim s As Double c = 3
s = 1
While c <= 20
s = s * c / (c - 2) c = c + 1
End While
程式 五 程式 六
TextBox1
提示: (1) 在表單上佈建3個Label 標籤 2個TextBox 文 方塊 及1個Button
按鈕 控制 ,並參照預覽圖設定這些控制 的Text屬性
(2) 雙按Button控制 ,在按鈕的Click事件中撰寫程式
解 請參考教資光碟中的方案檔 "Ans6-2c.sln"
6-3
Do…
Loop
迴圈敘述
6-3.2
後測式
Do
…
Loop
敘述
舉一反三
配合課本第236頁若要將上述程式的Do…Loop While敘述改以Do Until…Loop敘述來撰寫,程式應如何 修改?
解 請參考教資光碟中的方案檔 "ch6-3h_1.sln"
舉一反三
配合課本第237頁若要限制使用者最多只能輸入3次密碼,上述程式應如何修改? 提示:在迴圈敘述中,利
用累加i值來計算迴圈的執行次數,並加入If…Then敘述,判斷當i值 >=3 時結束程式
解 請參考教資光碟中的方案檔 "ch6-3i_1.sln"
下課想
2 配合課本第243頁若要限制TextBox1 文 方塊 控制 必須輸入000 ~ 999三位數 ,上述程式應如何 修改? 提示:加入If…Then…Else敘述,條件式為:TextBox1.Text Like "###"
成果預覽:
▍
▍
▍
Â
必須輸入三位數字
6-3
練習
配合課本第244頁一、選擇題
( A )1. 在Visual Basic中,對於重複結構,以下何者敘述正確?
(A)For…Next,While…End While,Do…Loop均屬於重複結構
(B)While…End While與Do While…Loop執行過程是不相同的
(C)Do While…Loop與Do Until…Loop執行過程是相同的
(D)Do Until…Loop與 Do…Loop Until執行過程是相同的 ≒技競
( C )2. 如下圖所示3種流程圖,下列有關VB控制結構化程式表示法的關係,何者正確?
(A)If…Then的流程圖為X
(B)Do…Loop While的流程圖為X
(C)Do…Loop While的流程圖為Z
(D)Do While…Loop的流程圖為Y 統測
▍
基礎
( C )3. 欲利用下面Visual Basic程式計算出1 - 1 2 +
1 4 -
1 8 +
1
16的值,則Do While後面
空格中應該填入什麼內容? (A)I < 4 (B)I < 5 (C)I < 6 (D)I < 7 ≒統測
Sum = 0 I = 1 C = 1
Do While
Sum = Sum + C C = (-1 / 2) * C I = I + 1
Loop
MsgBox(Sum)
條件 真 敘述
假
條件 真 敘述
假 條件
敘述
真
假
( C )4. 求執行下列Visual Basic程式後,輸出I值的結果為何?
(A)32 (B)37 (C)42 (D)47 ≒統測
I = 32 Do
If I > 40 Then Exit Do
I = I + 5 Loop
( D )5. 使用Visual Basic VB 程式語言執行下列程式碼後,結果為何?
I = 6 J = 1
Do While I <= 10 I = I + 1 J = J * I Loop
(A)J = 56 (B)J = 504 (C)J = 5040 (D)J = 55440 ≒統測
( D )6. 執行下面Visual Basic程式片段後,L值為何? (A)20 (B)75 (C)65 (D)55
L = 20
Do Until Not (L < 25 Or L >= 60) If L < 30 Then L = L + 55 If L >= 55 Then L = L - 10 Loop
( D )7. 以下的Visual Basic程式片段執行後,下列敘述何者不正確?
Dim sum As Integer Dim number As Integer sum = 0
number = 1
Do While number < 10 sum = sum + number number = number + 1 Loop
(A)變數number被定義為整數
(B)在迴圈中的變數number每次都累加1
(C)在迴圈中的變數sum用來累加變數number
(D)變數sum最後的值為55 統測
( D )8. a = 15 : b = 27 x = a : y = b Do Until a = b
If a > b Then a = a - b If a < b Then b = b - a Loop
MsgBox((x / a) & "/" & (y / a))
上述程式之執行結果為:(A)9/5 (B)0.5555 (C)1 (D)5/9 ≒統測
( A )9. 使用Visual Basic程式語言執行下列程式 一 後,Sum值為何?
(A)10 (B)18 (C)23 (D)30 ≒統測
I = 1
Do While I < 10 Debug.Print(I) I = I + 1 Loop
I = 1
Do Until I < 10 Debug.Print(I) I = I + 1 Loop
I = 1 Do
Debug.Print(I) I = I + 1 Loop Until I < 10
解 印出1 ~ 9 解 不執行Do Until…
Loop迴圈
解 印出1
Sum = 0 J = 1
Do While J < 5
If J Mod 2 = 1 Then Sum = 3 * Sum Else
Sum = Sum + J End If
J = J + 1 Loop
A = 1 : B = 1 Do
A = A + B Select Case A
Case Is < 10: A = A * 2 Case Is > 10: A = A + 3 End Select
B = B + 1 Loop Until B > 5
程式 一 程式 二
( C )10. Visual Basic程式 二 執行後A值為何? (A)18 (B)25 (C)33 (D)42 ≒統測
二、多元練習題
2. 將兩數不斷以大數減去小數,直到兩數相等,即可得到兩數的 最大公因數 請利 用Do Until…Loop迴圈敘述來撰寫此程式,並將專案儲 為 "Ans6-3b.sln"
成果預覽:
TextBox1
TextBox2
提示: (1) 在表單上佈建2個Label 標籤 2個TextBox 文 方塊 及1個Button
按鈕 控制 ,並參照上圖所示的預覽圖設定控制 的Text屬性
(2) 雙按Button控制 ,在按鈕的Click事件中撰寫程式
(3) 宣 告n 1 n 2變 數 為 整 數 資 料 型 別 , 並 將Te x t B o x 1的 值 指 定 給n 1 TextBox2的值指定給n2
(4) 重複執行以下判斷,直到n1 = n2為止:
若n1 > n2,則n1 = n1 - n2,否則n2 = n2 - n1
(5) 利用MsgBox()函數顯示最大公因數
解 請參考教資光碟中的方案檔 "Ans6-3b.sln"
6-4
巢狀迴圈敘述
舉一反三
配合課本第249頁如果要在文 方塊 TextBox1 中顯示 倒三角形 ,上述程式應如何修改? 提示:
設定i的初始值為5;外迴圈每執行一次,i值需減1
解 請參考教資光碟中的方案檔 "ch6-4a_1.sln"
馬上練習
配合課本第251頁( C )1. 使用Visual Basic VB 程式語言執行以下程式碼後,即時運算視窗共輸出幾個
*? (A)8 (B)10 (C)12 (D)14 ≒統測
For I = 6 To 1 Step -2 For K = 1 To I
Debug.Print("*") Next K
Next I
▍
( C )3. Visual Basic程式 二 執行後,S值為何? (A)38 (B)41 (C)43 (D)46 ≒技競
( B )4. 下列Visual Basic 程式執行後,X值為何? (A)8 (B)6 (C)2 (D)0 統測
X = 102 Y = 40
FOR J = 2 TO 4 DO WHILE X <> Y IF X > Y THEN X = X - Y ELSE
Y = Y - X END IF
X = X - J LOOP
NEXT J
( C )5. 以下的Visual Basic程式片段執行後,下列敘述何者不正確? (A)s的內容為由星 號 * 構成的長方形 (B)每連續列印5個星號即會換到下一行 (C)s變數共被改
變35次 (D)s變數的內容為7列星號 ≒統測
Dim s As String For i = 3 To 9 For j = 7 To 11 s = s & "*" Next j
s = s & VbCrLf
Next i
S = 0 : C = 1 While C <= 5
For I = 1 To C S = S + 1 Next I
C = C + 2 End While
S = 0
For K = 1 To 6 Step 2 For J = 3 To 8 Step 3 S = S + J
Next J Next K
S = S + K + J
程式 一 程式 二
( C )2. Visual Basic程式 一 執行後,S值是多少?
6-4
練習
配合課本第253頁一、選擇題
( D )1. 使用Visual Basic程式語言執行下列程式碼後,會輸出多少個*符號?
(A)12個 (B)15個 (C)20個 (D)30個 ≒統測
For I = 1 to 3
For J = 1 To 4 Step 3 For K = 1 To 5
Debug.Print("*") Next K,J,I
( B )2. 使用Visual Basic程式語言執行下列程式碼後,i + s的值為何?
(A)9 (B)10 (C)18 (D)19 ≒技競
s = 0 : i = 1 Do Until i > 4 i = i + 1 While s < i s = s + i i = i + 1 End While Loop
( A )3. 執行下列Visual Basic程式後,變數sum的值為何?
(A)15 (B)125 (C)225 (D)345 ≒統測
i = 1 : j = 1 : k = 1 While (i < 5)
While ( j < 5) While (k < 5) k = k + 1 End While j = j + 1 End While i = i + 1 End While
sum = i + j + k ▍
( B )4. 若要利用下列程式計算出(1 * 1) + (2 * 1 + 2 * 2) + (3 * 1 + 3 * 2 + 3 * 3)的 值,空格中的值要填入什麼內容? (A)4 - K (B)K (C)3 (D)K - 1 ≒技競
S = 0
For K = 1 To 3
For M = 1 To
S = S + K * M Next M
Next K
( A )5. 用Visual Basic寫一個程式,若要使變數s的內容如右下圖,則下列程式的空格內應照 序填入哪些變數方可得到正確結果? (A)I, I (B)I, J (C)6, I (D)6, J ≒技競
Dim s As String
For I = 1 To 6 1 For J = 1 To 22 s = s & 333
Next J 4444
s = s & VbCrLf 55555
Next I 666666
( B )6. 執行下列Visual Basic語言片段程式的結果為何?
For I = 10 To 16
For J = 100 To 105 Debug.Print("**") Next J
Debug.Print("*")
Next I
(A)總共印出96個星號 * (B)總共印出91個星號 *
(C)總共印出84個星號 * (D)總共印出66個星號 * ≒統測
( B )7. 執行完以下Visual Basic程式,總共會顯示幾列結果?
(A)5 (B)9 (C)45 (D)81 ≒統測
Dim s As String For i = 1 to 9
For j = 1 to 9 Step 2
s = s & i & "*" & j & "=" & i * j & " " Next j
s = s & VbCrLf
Next i
MsgBox(s)
( C )8. 下列程式執行後,c的值為何? (A)27 (B)30 (C)36 (D)45 ≒技競
c = 0
For i = 0 To 8 For j = 0 To 8
If (i \ 3 + j \ 3) Mod 2 = 1 Then c = c + 1
End If Next j
Next i
( B )9. 下列Visual Basic程式片段執行後,b的值為?
(A)55 (B)58 (C)68 (D)73 ≒統測
a = 1 : b = 2 Do
While a < 10
a = a + 1
End While
b = a + b
If ( b Mod 2 = 0 ) Then
b = b + 5
Else
b = b + 3
End If
Loop Until b > 50
( C )10. 執行下列Visual Basic程式片段後,請問k值為何?
(A)6 (B)7 (C)8 (D)9 ≒技競
Dim i, j, k As Integer k = 0
For i = 0 To 2 For j = 0 To 2
If (i <> 1 Or i <> 2 And j <> 1) Then k = k + j
二、多元練習題
1. 如果要輸出如右圖所示的圖形,應在空格中填入什麼內容?
Dim s As String
For i = 1 To 5
For j = 1 To 5
If i = j Then s = s & "1" Else
s = s & "0" End If
Next
s = s & vbCrLf Next
MsgBox(s)
2. 請利用巢狀迴圈,計算1! + 2! + 3! + 4! + 5!的值,並將專案儲 為 "Ans6-4a.sln"
成果預覽:
10000 01000 00100 00010 00001
提示: (1) 1! = 1,2! = 1 × 2,3! = 1 × 2 × 3,以此類推
(2) 宣告整數變數sum 用來計算1! 2! 3! 4! 5! 與
n 用來加總1! + 2! + 3! + 4! + 5!
(3) 設定外迴圈為For i = 1 To 5,內迴圈為For j = 1 To i
(4) 在內迴圈前,設定sum = 1,使sum每次皆從1開始相乘
(5) 在內迴圈中,設定sum = sum * j,以計算1! 2! 3! 4! 5!的乘積
(6) 在內迴圈後,設定n = n + sum,以加總sum值
(7) 用MsgBox()函數顯示答案
綜合評量
配合課本第257頁一、選擇題
( C )1. 下列程式中,如用For…Next計算1至100的奇數和,則下列程式 內,應依 序填入那些數 ? (A)1,1 (B)2,2 (C)1,2 (D)2,1 ≒統測
10 SUM = 0
20 For I = To 100 Step
30 SUM = SUM + I 40 Next I
( C )2. 執行Visual Basic語言程式 一 的結果為何?
(A)4 (B)6 (C)10 (D)30 ≒統測 基礎
S = 0
For X = 1 to 2 For Y = 1 to 3 S = S + 1 Next Y
S = S + 2 Next X
MsgBox(S)
T = 0 U = 0
DO WHILE U < 30
IF U MOD 2 = 1 THEN T = T + U
END IF U = U + 1 LOOP
程式 一 程式 二
( C )3. Visual Basic程式 二 執行後,T的值為何?
(A)256 (B)240 (C)225 (D)196 ≒統測
( A )4. 下列Visual Basic程式片段,若執行後power之值為8,則X之值應設為多少? (A)2 (B)4 (C)6 (D)8 統測
Dim i, power, N, X As Integer
i = 1 : power = 1 : N = 3 : X =
Do While i <= N
power = power * X i = i + 1
( C )5. 以下是一個加上行號的Do迴圈指 Visual Basic程式片段,執行後Ans之值為何? (A)9 (B)14 (C)40 (D)280 統測
1 Dim i, Ans As Integer 2 Ans = 1
3 i = 1
4 Do While i <= 10
5 If i Mod 2 = 0 Then 6 Ans = Ans * i 7 End If
8 i = i + 3 9 Loop
( B )6. 續上題,要將上一題的程式改以For迴圈指 取 ,下列程式第4行之中有X Y和
Z等三個變數,應該在行號3同一行後方撰寫哪一行指 指定其值,才能獲得相同
的結果?
(A)X = 1 : Y = 3 : Z = 10 (B)X = 1 : Y = 10 : Z = 3
(C)X = 3 : Y = 10 : Z = 1 (D)X = 10 : Y = 1 : Z = 3 統測
1 Dim i, Ans, X, Y, Z As Integer 2 Ans = 1
3
4 For i = X To Y Step Z 5 If i Mod 2 = 0 Then 6 Ans = Ans * i 7 End If
8 Next
( C )7. 下列Visual Basic語言片段程式的執行結果為何?
(A)D = 1680 (B)D = 168000 (C)D = 15120 (D)D = 151200 ≒統測
C = 5 : D = 1 Do
( C )8. 以下Visual Basic程式,可求出n值 以30030為例 之所有因數,請問空白處應 填入之內容為何? (A)n < f (B)n > f (C)n >= f (D)n <= f ≒技競
Dim n As Long, f As Long Dim s As String
n = 30030 f = 2
While
If n Mod f = 0 Then s = s & f & " " n = n \ f
Else
f = f + 1 End If
End While MsgBox (s)
執行結果
2 3 5 7 11 13
( A )9. 下列程式執行後,L的值為多少? (A)40 (B)39 (C)90 (D)91 ≒技競
Dim L = 35
Do Until Not (L < 40 Or L >= 90) If L < 40 Then
L = L + 100 ElseIf L >= 90 Then L = L - 99 End If
Loop
( B )10. 下列Visual Basic程式片段執行後,J的值為何?
(A)134 (B)140 (C)174 (D)225 統測
J = 0
FOR K = 1 TO 5 FOR L = K TO 5 J = J + K * L NEXT L
NEXT K
( A )11. 執行下列Visual Basic程式後,S值為何?
(A)0 (B)7 (C)22 (D)35 ≒技競
Dim S, I, J As Integer S = 0
I = 1
While I >= 5
For J = 1 To I S = S + J Next J
I = I + 2 End While
( B )12. 下列這段Visual Basic程式碼執行後,X值結果為何?
(A)0 (B)2 (C)11 (D)20 ≒統測
X = 0
For Y = 1 To 10 Step 2 For Z = 10 To 1 Step -3 If Y = Z Then
X = X + 1 End If
Next Z
Next Y
( A )13. 下列Visual Basic程式執行後,a值為何?
(A)17 (B)18 (C)19 (D)20 ≒技競
a = 5 : b = 7 : c = 3 For i = 1 To 2
Do until a > 12
If a > b Then a = a - b If b > c Then b = b - c a = a + b * c
Loop
( B )15. 執行Visual Basic語言片段程式 四 的結果為何?
(A)0 (B)6 (C)21 (D)30 ≒統測
二、實作題
1. 利用巢狀For迴圈,輸出由數 組成的三角形 如下圖 ,並將專案儲 為 "Ans6-a. sln"
成果預覽:
Dim count As Integer count = 0
For i = 1 To 10 For j = 1 To i For k = 1 To j If i = j Then
count = count + 1 End If
Next k Next j Next i
A = 42 : B = 30 : C = 1 Do While C <> 0
C = A Mod B If C <> 0 Then A = B B = C End If Loop
MsgBox(B)
程式 三 程式 四
提示: (1) 在表單上佈建1個TextBox 文 方塊 ,並設定Multiline屬性為True
(2) 雙按表單,在表單的Load事件中撰寫程式
(3) 設定外迴圈為For i = 5 To 1,內迴圈為For j = 1 To i
(4) 在內迴圈設定每執行一次內迴圈,TextBox1.Text = TextBox1.Text & i
(5) 在外迴圈設定每執行一次外迴圈,spc = spc & "△" △ 表空格 ,
TextBox1.Text = TextBox1.Text & vbCrLf & spc
解 請參考教資光碟中的方案檔 "Ans6-a.sln"
( B )14. 下列程式 三 執行後,count的值為何? (A)54 (B)55 (C)56 (D)57 ≒技競
2. 請開啟範例檔案 "Ex6-b.sln",利用任一種迴圈敘述,撰寫一個記憶力大考驗的程式, 並將專案儲 為 "Ans6-b.sln"
成果預覽:
提示: (1) 設定Timer1的Interval屬性為5000,以控制Timer1中的程式每5 執行一 次
(2) 雙按Button1,在Button1的Click事件中撰寫程式
(3) 在Label1 ~ Label5顯示10 ~ 99之間的整數亂數 Int(Rnd() * 80) + 10 ,並設定Timer1的Enable屬性為True
(4) 雙按Timer1,在Timer1的Tick事件中撰寫程式
(5) 設定Timer1的Enable屬性為False,並宣告ans userAns變數為 串型 別
(6) 將Label1 ~ Label5的Text值用 串連接的方式 入變數ans,再將Label1 ~ Label5的Text值清空 設定為空 串""
(7) 利用迴圈敘述產生5次InputBox交談窗,讓使用者依序輸入5個數 ,並將
使用者輸入的數 用 串連接的方式 入變數userAns
(8) 比對ans與userAns的值是否一致,若一致顯示答對了,否則顯示答錯了
解 請參考教資光碟中的方案檔 "Ans6-b.sln"
Label1 ~ Label5