第7章實作題答案
Q1.寫一程式找出 A、B 兩數中的絕對值較大者。
Ans:
A = Val(InputBox("請輸入A")) B = Val(InputBox("請輸入B")) If A < 0 Then AbsA = -A Else AbsA = A If B < 0 Then AbsB = -B Else AbsB = B If AbsA = AbsB Then MsgBox "絕對值的A=絕對值的B" ElseIf AbsA > AbsB Then MsgBox "A的絕對值比較大" Else MsgBox "B的絕對值比較大" End If
Q2.寫一程式輸入 A、B、C
三個數值,然後找出最大的數。
Ans:
A = Val(InputBox("請輸入A")) B = Val(InputBox("請輸入B")) C = Val(InputBox("請輸入C")) If A > B And A > C Then MsgBox "A最大" If B > A And B > C Then MsgBox "B最大" If C > A And C > B Then MsgBox "C最大"
3.計算 20! = 1×2×3×…×20。
Ans:
Sum = 1 For I = 1 To 20 Sum = Sum * I Next MsgBox Sum
Q4.輸入 N 個數值,然後印出最小的數值。
Ans:
N = InputBox("請輸入N的值") Small = 999999999 For I = 1 To N A = Val(InputBox("請輸入任意數值")) If A < Small Then Small = A Next MsgBox "最小的為" & Small
Q5.利用 InputBox
連續輸入數值資料,直到輸入值等於 -1
時,方才結束輸入,最後把所有輸入值之中最大的數值列印出來。
Ans:
Big = -999999999 Do A = Val(InputBox("請輸入任意數值,-1代表停止")) If A > Big Then Big = A Loop Until A = -1 MsgBox "最大的為" & Big
Q6.某班學生人數不詳,欲輸入每一個學生的 VB
成績,當輸入 -1
時表示結束輸入,然後計算全班人數、及格人數、不及格人數、及全班平均分數。
Ans:
I = 0 J = 0 Sum = 0 Do A = Val(InputBox("輸入VB分數,-1代表停止")) I = I + 1 ' 代表全班人數 If A >= 60 Then J = J + 1 ' 代表及格人數 Sum = Sum + A ' 代表總分 Loop Until A = -1 MsgBox "人數" & I - 1 & "及格人數" & J & "不及格人數" & I - 1 - J & "平均" & (Sum + 1) / (I - 1)
Q7. 寫一程式列出 1∼100 之間所有能被 7
整除的整數。(v
註:請使用迴圈執行次數較少的作法。)
Ans:
For i = 7 To 100 Step 7 S = S & i & "," Next i MsgBox S
Q8. 輸出九九乘法表。
Ans:
For j = 1 To 9 For i = 1 To 9 S = S & j & "*" & i & "=" & j * i & Chr(13) Next i Next j MsgBox S
Q9. 一元二次方程式 ax2 + bx + c = 0
的兩個根為:輸入 a、b、c
的值,然後求出兩個根。(註:若b2-4ac < 0,則輸出
"實數根不存在",若b2-4ac = 0,則只輸出一個根)
Ans:
a = Val(InputBox("a = ?")) b = Val(InputBox("b = ?")) c = Val(InputBox("c = ?")) d = b ^ 2 - 4 * a * c If d < 0 Then MsgBox "實數根不存在" ElseIf d = 0 Then MsgBox "x=" & -b / (2 * a) Else MsgBox "x有2個根, 為" & (-b + d) / (2 * a) & ", " & (-b - d) / (2 * a) End If
Q10. 寫一程式計算:
(1) Sum = 4 + 9 + 13 + … + 99
Ans:
Sum = 0 For i = 4 To 94 Step 9 Sum = Sum + i Next i For i = 9 To 99 Step 9 Sum = Sum + i Next i MsgBox "ANSWER = " & Sum
(2) Sum = 1 * 2 * 3 * … * 20
Ans:
同第3題
(3) Sum = (1-1/2)(1-1/3)(1-1/4)…(1-1/N) (先利用 InputBox
輸入 N)
Ans:
n = Val(InputBox("Input n=")) Sum = 1 For i = 2 To n Sum = Sum * (1 - 1 / i) Next i MsgBox Sum
Q11. 有 VB 書一本定價 420元,購買時折扣方式如下:
1∼4本 照定價出售
5∼ 9本 照定價打 9 折
10∼49本 照定價打 8 折
50 本以上 照定價打 7 折
利用 InputBox 輸入購買本數,然後計算總價。
Ans:
n = Val(InputBox("Input n=")) Select Case n Case 1 To 4 Sum = 420 * n Case 5 To 9 Sum = 420 * n * 0.9 Case 10 To 49 Sum = 420 * n * 0.8 Case Is >= 50 Sum = 420 * n * 0.7 End Select MsgBox "總共" & Sum & "元"
Q12.假設個人綜合所得稅係採用累進課稅方式,如下:
所得 30 萬以內 課 6%
所得 30∼80 萬 課 13%
所得 80∼150 萬 課 21%
所得 150∼300 萬 課 30%
所得 300 萬以上 課 40%
寫一程式輸入某人的所得,然後計算應繳之稅款。
Ans:
n = Val(InputBox("Input 所得")) Select Case n Case Is <= 300000 Sum = n * 0.06 Case 300001 To 800000 Sum = 300000 * 0.06 + (n - 300000) * 0.13 Case 800001 To 1500000 Sum = 300000 * 0.06 + 500000 * 0.13 + (n - 800000) * 0.21 Case 1500001 To 3000000 Sum = 300000 * 0.06 + 500000 * 0.13 + 700000 * 0.21 + (n -1500000) * 0.3 Case Is > 3000000 Sum = 300000 * 0.06 + 500000 * 0.13 + 700000 * 0.21 + 1500000 *0.3 + (n - 3000000) * 0.4 End Select MsgBox "稅金共" & Sum & "元"
13. 利用兩層 For-Next 迴圈印出:
(1)
*
**
***
****
*****
Ans:
For j = 1 To 5 For i = 1 To j s = s & "*" Next i s = s & Chr(13) Next j
(2)
*****
****
***
**
*