VB 6.0 講義  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

91學年五專機三檢定二試題檢討


1. 設計一個程式, 用來做問卷, 共有3題, 第一題問使用者慣用左手或右手(單選),第二題問使用者喜歡釣魚或爬山(可任意選擇),第三題問使用者是男生或女生(單選),將使用者選的結果貼在標籤上 ( 如需其他物件, 請自行增加, 但結果一定要貼在標籤上), (提示: 用核取方塊 和 選項鈕來做) 70%

解答:(用4個 label 的做法)

Private Sub Check1_Click()
If Check1.Value = 1 Then
Label2.Caption = "fishing"
Else
Label2.Caption = ""
End If
End Sub

Private Sub Check2_Click()
If Check2.Value = 1 Then
Label3.Caption = "mountain"
Else
Label3.Caption = ""
End If
End Sub

Private Sub Option1_Click()
If Option1.Value = True Then
Label1.Caption = "boy"
Else
Label1.Caption = "girl"
End If
End Sub

Private Sub Option2_Click()
If Option1.Value = True Then
Label1.Caption = "boy"
Else
Label1.Caption = "girl"
End If
End Sub

Private Sub Option3_Click()
If Option3.Value = True Then
Label4.Caption = "left"
Else
Label4.Caption = "right"
End If
End Sub

Private Sub Option4_Click()
If Option3.Value = True Then
Label4.Caption = "left"
Else
Label4.Caption = "right"
End If
End Sub

解答:(用1個 label 的做法) 分別在option1~4 和 check1~2 的 click 事件中加入以下的程式碼

If Option1.Value = True Then
a = "boy"
Else
a = "girl"
End If

If Check1.Value = 1 Then
b = "fishing"
Else
b = ""
End If

If Check2.Value = 1 Then
c = "mountain"
Else
c = ""
End If

If Option3.Value = True Then
d = "left"
Else
d = "right"
End If
Label5.Caption = a & " " & b & " " & c & " " & d


2. 求4X2 + 4X-3=0 的2個根(近似解)? 60%

解答:

For x = -10 To 10 Step 0.1
If Abs(4 * x ^ 2 + 4 * x - 3) < 0.1 Then Print x
Next x


3. 設計一個程式, 將2個骰子所能擲出的點數狀況, 都印出來(例: 1+1=1, 1+2=2, …. 6 + 6 = 12 )(提示: 用做99乘法表的觀念來做);最後把所有出現的點數的機率都印出(例: 2= 1/36, 3= 2/36 , …. ) (提示: 用陣列來累計) 90%

解答:(不用陣列的做法) 重點提示: 利用雙重迴圈來做, 外圈代表第1個骰子, 內圈代表第2個骰子, 再利用 c2 ~ c12 這幾個變數來累計出現2~12點的次數, 利用 select case 來判斷這一次那個變數要累加

For i = 1 To 6
For j = 1 To 6
Print i; " + "; j; " = "; i + j
Select Case i + j
Case 2:
c2 = c2 + 1
Case 3:
c3 = c3 + 1
Case 4:
c4 = c4 + 1
Case 5:
c5 = c5 + 1
Case 6:
c6 = c6 + 1
Case 7:
c7 = c7 + 1
Case 8:
c8 = c8 + 1
Case 9:
c9 = c9 + 1
Case 10:
c10 = c10 + 1
Case 11:
c11 = c11 + 1
Case 12:
c12 = c12 + 1
End Select
Next j
Next i

Print "2="; c2; "/36"
Print "3="; c3; "/36"
Print "4="; c4; "/36"
Print "5="; c5; "/36"
Print "6="; c6; "/36"
Print "7="; c7; "/36"
Print "8="; c8; "/36"
Print "9="; c9; "/36"
Print "10="; c10; "/36"
Print "11="; c11; "/36"
Print "12="; c12; "/36"

解答:(用陣列的做法) 重點提示: 利用雙重迴圈來做, 外圈代表第1個骰子, 內圈代表第2個骰子, 再利用 c( ) 陣列來累計出現2~12點的次數, c(2)代表累計出現2點的次數, c(3)代表累計出現3點的次數, ... , c(12)代表累計出現12點的次數, 記得一定要把c( ) 宣告成全域變數

Dim c(12)


Private Sub Command1_Click()

For i = 1 To 6
For j = 1 To 6
Print i; " + "; j; " = "; i + j
c(i + j) = c(i + j) + 1
Next j
Next i

For k = 2 To 12
Print k; "="; c(k); "/36"
Next k

End Sub


4. 設計一個程式, 利用計時器、文字框、標籤、按鈕 來做一個倒數計時的程式, 文字框中的數字代表倒數用的秒數, 使用者在文字框中輸入數字, 按下按鈕後就文字框中的數字就開始倒數, 時間到後, 程式就會在標籤上貼"時間到了" 80%

解答:

Private Sub Command1_Click()
Timer1.Interval = 1000
End Sub

Private Sub Timer1_Timer()
a = Val(Text1.Text)
If a = 0 Then
Label1.Caption = "time up"
Else
a = a - 1
Text1.Text = a
End If
End Sub


5. 設計一個程式, 讓使用者可以不斷的輸入身高, 而隨時可以按不同的按鈕來取得, 目前輸入了幾個人、最高的身高、最低的身高、平均的身高;最後可以輸入身高的區間範圍(另外搭配2個文字框), 顯示符合範圍的有幾個人(例: 輸入140,170 , 代表把身高介於 140~170 之間有幾個人顯示出來) 100%

解答: 重點提示: 記得一定要把h( ) 和 i 宣告成全域變數 , h( ) 用來存身高, i 用來累計輸入幾筆, 用 text1來輸入身高, 用6個命令鈕( c1input, c2account , c3max , c4min , c5ave , c6range , 分別代表輸入、顯示目前輸入了幾個人、顯示最高的身高、顯示最低的身高、顯示平均的身高, 符合範圍的有幾個), text2 和 text3 用來輸入身高的區間範圍

Dim h(50)
Dim i

Private Sub c1input_Click()
i = i + 1
h(i) = Val(Text1.Text)
End Sub

Private Sub c2account_Click()
Print "total input : "; i
End Sub

Private Sub c3max_Click()
Mx = 0
For k = 1 To i
If Mx < h(k) Then Mx = h(k)
Next k
Print "Max height :"; Mx
End Sub

Private Sub c4min_Click()
Mn = 9999
For k = 1 To i
If Mn > h(k) Then Mn = h(k)
Next k
Print "Min height :"; Mn
End Sub

Private Sub c5ave_Click()
Sum = 0
For k = 1 To i
Sum = Sum + h(k)
Next k
Print "Average height :"; Sum / i
End Sub

Private Sub c6range_Click()
a = Val(Text2.Text)
b = Val(Text3.Text)
d = 0
For k = 1 To i
If h(k) > a And h(k) < b Then d = d + 1
Next k
Print "in range number :"; d
End Sub