You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
[ Visual Basic<br />
檔]<br />
學 習<br />
作者-林家民<br />
指導老師-劉玉敏
目錄<br />
第一章:認識作業系統與程式語言<br />
第二章:資料型別與基本輸入指令<br />
第三章:Visual B asic控制物件<br />
第四章:程式設計概念<br />
第五章:條件結構<br />
第六章:重複結構<br />
第七章:陣列<br />
第八章:排序與搜尋<br />
第九章:結構化程式設計<br />
第十二章:資料檔案
題目說明:圓面積計算,請輸入半徑之後點下計算求得圓的面積<br />
檔案名稱:<strong>03</strong> \ ch1 \ P.30<br />
表單:<br />
程式碼:<br />
Private Sub Command1_Click()<br />
Const pi = 3.14159<br />
Dim r As Single<br />
Dim area As Single<br />
r = Val(Text1.Text)<br />
area = pi * r ^ 2<br />
Text2.Text = area<br />
End Sub<br />
Private Sub Command2_Click()<br />
Text1.Text = ""<br />
Text2.Text = ""<br />
End Sub<br />
Private Sub Command3_Click()<br />
End<br />
End Sub<br />
執行結果:
題目說明:BMI 計算,請輸入身高和體重之後按下計算求得 BMI 值,按取消<br />
則可重新輸入<br />
檔案名稱:<strong>03</strong> \ ch1 \ P.34<br />
表單:<br />
程式碼:<br />
Private Sub Command1_Click()<br />
Dim H, W, bmi As Single<br />
H = Val(TEXT1.Text) / 100<br />
W = Val(Text2.Text)<br />
bmi = W / (H ^ 2)<br />
Label3.Caption = Label3.Caption & bmi<br />
End Sub<br />
Private Sub Command2_Click()<br />
TEXT1.Text = ""<br />
Text2.Text = ""<br />
Label3.Caption = "你的 BMI 值:"<br />
End Sub<br />
Private Sub Command3_Click()<br />
End<br />
End Sub<br />
執行結果:
題目說明:設計一個計算三角形面積的程式,利用 InputBox 函數讓使用者在輸<br />
入交談窗中輸入三角形的底和高,並以 MsgBox 敘述顯示計算結果。<br />
檔案名稱:<strong>03</strong> \ ch2 \ P.75<br />
表單:<br />
程式碼:<br />
Private Sub Form_Activate()<br />
Dim x, y, a As Integer<br />
x = InputBox("請輸入底邊長", "三角形面積")<br />
y = InputBox("請輸入高", "三角形面積")<br />
a = (x * y) / 2<br />
MsgBox "三角形面積為" & a & "平方單位", , "三角形面積"<br />
Close<br />
End<br />
End Sub<br />
執行結果:
題目說明:設計一個歡迎使用者登入系統的程式,利用 InputBox 函數讓使用者<br />
在輸入交談窗中輸入自己的姓名,再以 MsgBox 敘述顯示歡迎光臨<br />
的訊息。<br />
檔案名稱:<strong>03</strong> \ ch2 \ P.76<br />
表單:<br />
程式碼:<br />
Private Sub Form_Activate()<br />
Dim name As String<br />
Form1.Hide<br />
name = InputBox("請輸入大名", "歡迎光臨")<br />
MsgBox name & "同學您好" & ",歡迎光臨", 0, "Welcome"<br />
End<br />
End Sub<br />
執行結果:
題目說明:請利用屬性視窗,設定表單的屬性<br />
檔案名稱:<strong>03</strong> \ ch3 \ P.91<br />
表單:<br />
程式碼:<br />
Private Sub Form_Click()<br />
Form1.BackColor = &HFF&<br />
End Sub<br />
Private Sub Form_DblClick()<br />
Form1.BackColor = &HFF00FF<br />
End Sub<br />
執行結果:
題目說明:使用兩個按鈕控制物件,讓使用者按下放大鈕時,可放大輸出在表<br />
單上字串(“Basic”)的字體大小;在按鈕縮小鈕時,則縮小輸出在表<br />
單上字串的字體大小<br />
檔案名稱:<strong>03</strong> \ ch3 \ P.99<br />
表單:<br />
程式碼:<br />
Private Sub Command1_Click()<br />
Form1.FontSize = Form1.FontSize + 3<br />
Print "Basic"<br />
End Sub<br />
Private Sub Command2_Click()<br />
Form1.FontSize = Form1.FontSize - 3<br />
Print "Basic"<br />
End Sub<br />
執行結果:
題目說明:使用一個標籤來顯示腦筋急轉彎的題目,並在使用者按下謎底揭曉<br />
鈕後,在另一個標籤中顯示解答<br />
檔案名稱:<strong>03</strong> \ ch3 \ P.102<br />
表單:<br />
程式碼:<br />
Private Sub Command1_Click()<br />
Label2.Visible = True<br />
End Sub<br />
執行結果:
題目說明:在表單上佈建兩個文字方塊控制物件,並讓使用者輸入於其中,並<br />
觀察其變化。<br />
檔案名稱:<strong>03</strong> \ ch3 \ P.105<br />
表單:<br />
程式碼:<br />
Private Sub Command1_Click()<br />
MsgBox "你的帳號為" & Text2.Text, , "登入成功"<br />
End Sub<br />
Private Sub Command2_Click()<br />
Text1.Text = " "<br />
Text2.Text = ""<br />
Text1.SetFocus<br />
End Sub<br />
Private Sub Command3_Click()<br />
End<br />
End Sub<br />
Private Sub Text1_LostFocus()<br />
If Len(Text1.Text) 6 Then<br />
MsgBox "帳號應為 6 個數!", , "請重新輸入"<br />
End If<br />
End Sub<br />
執行結果:
題目說明:設計一個類似聊天室的程式,可讓兩個使用者在表單上進行聊天<br />
檔案名稱:<strong>03</strong> \ ch3 \ P.111<br />
表單:<br />
程式碼:<br />
Private Sub Command1_Click()<br />
Text3.Text = Text3.Text & Label1.Caption & Text1.Text & vbCrLf<br />
Text1.Text = " "<br />
End Sub<br />
Private Sub Command2_Click()<br />
Text3.Text = ""<br />
End Sub<br />
Private Sub Command3_Click()<br />
Text3.Text = Text3.Text & Label2.Caption & Text2.Text & vbCrLf<br />
Text2.Text = " "<br />
End Sub<br />
執行結果:
題目說明:設計一個簡易的遊戲程式,讓使用者可在兩個影像相異部份的上單<br />
按滑鼠左鍵<br />
檔案名稱:<strong>03</strong> \ ch3 \ P.112<br />
表單:<br />
程式碼:<br />
Private Sub Picture1_Click()<br />
End Sub<br />
Private Sub Command1_Click()<br />
End<br />
End Sub<br />
Private Sub Image1_Click()<br />
End Sub<br />
Private Sub Image2_Click()<br />
MsgBox "不對哦", , "沒找到"<br />
End Sub<br />
Private Sub Label2_Click()<br />
MsgBox "好棒哦", , "找到了"<br />
Label2.Enabled = False<br />
End Sub<br />
Private Sub Label3_Click()<br />
MsgBox "好棒哦", , "找到了"<br />
Label3.Enabled = False<br />
End Sub<br />
Private Sub Label4_Click()<br />
MsgBox "好棒哦", , "找到了"<br />
Label4.Enabled = False<br />
End Sub<br />
Private Sub Label5_Click()<br />
MsgBox "好棒哦", , "找到了"
Label5.Enabled = False<br />
End Sub<br />
Private Sub Label6_Click()<br />
MsgBox "好棒哦", , "找到了"<br />
Label6.Enabled = False<br />
End Sub<br />
Private Sub Label7_Click()<br />
MsgBox "好棒哦", , "找到了"<br />
Label7.Enabled = False<br />
End Sub<br />
Private Sub Label8_Click()<br />
MsgBox "好棒哦", , "找到了"<br />
End Sub<br />
執行結果:
題目說明:輸入使用者的西元年月份以計算其年齡<br />
檔案名稱:<strong>03</strong> \ ch4 \ P.128<br />
表單:<br />
程式碼:<br />
Private Sub Form_Activate()<br />
Dim age As Integer<br />
age = InputBox("請輸入西元的出生年份", "計算年齡")<br />
age = 2009 - age<br />
MsgBox "您的年齡為" & age & "歲", , "年齡"<br />
End Sub<br />
執行結果:ex.輸入 1992
題目說明:輸入購物金額,弱金額為 3000 以上則給予折扣八五折,若沒則為原<br />
價錢<br />
檔案名稱:<strong>03</strong> \ ch4 \ P.129<br />
表單:<br />
程式碼:<br />
Private Sub Form_Activate()<br />
Dim amount As Integer<br />
amount = InputBox("請輸入購物金額", "金額輸入")<br />
If amount = 3000 Then<br />
amount = 3000 * 0.85<br />
MsgBox "您的購物金額為" & amount, , "金額顯示"<br />
Else<br />
MsgBox "您的購物金額為" & amount, , "金額顯示"<br />
End If<br />
End Sub<br />
執行結果:ex.輸入 3000
題目說明:判斷成績是否大於等於 60?若是,便顯示”成績及格”的訊息<br />
檔案名稱:<strong>03</strong> \ ch5 \ P.135-1<br />
表單:<br />
程式碼:<br />
Private Sub Form_Activate()<br />
Dim score As Integer<br />
score = InputBox("請輸入成績", "成績輸入")<br />
If score >= 60 Then MsgBox "成績及格了", 48, "恭喜"<br />
If score < 60 Then MsgBox "成績不及格", 16, "再加油"<br />
End Sub<br />
執行結果:ex.輸入 60
題目說明:判斷購票者是否為學生身分?若是,則以七折來計算電影票價<br />
檔案名稱:<strong>03</strong> \ ch5 \ P.135-2<br />
表單:<br />
程式碼:<br />
Private Sub Form_Activate()<br />
Dim price As Integer<br />
Dim ans As String<br />
price = 250<br />
ans = InputBox("如果為學生請輸入 Y,不是請輸入 N", "身份確認")<br />
If ans = "Y" Or ans = "y" Then<br />
price = price * 0.7<br />
MsgBox "學生票價為:" & price, , "顯示票價"<br />
End If<br />
If ans = "N" Or ans = "n" Then<br />
price = price<br />
MsgBox "您的票價為:" & price, , "顯示票價"<br />
End If<br />
End Sub<br />
執行結果:ex.輸入 Y
題目說明:判斷成績是否大於等於 60?若是,則顯示”成績及格”的訊息,否則,<br />
就顯示”成績不及格”的訊息<br />
檔案名稱:<strong>03</strong> \ ch5 \ P.138<br />
表單:<br />
程式碼:<br />
Private Sub Form_Activate()<br />
Dim score As Integer<br />
score = InputBox("請輸入成績", "成績輸入")<br />
If score >= 60 Then<br />
MsgBox "成績及格了", 48, "恭喜"<br />
Else: MsgBox "成績不及格", 16, "再加油"<br />
End If<br />
End Sub<br />
執行結果:ex.輸入 60
題目說明:判斷視力檢測值是否介於 0.8(不含) ~ 1.2 之間?若是,則顯示”視力<br />
正常”的訊息,否則,就顯示” 視力可能需要矯正”的訊息<br />
檔案名稱:<strong>03</strong> \ ch5 \ P.139-1<br />
表單:<br />
程式碼:<br />
Private Sub Form_Activate()<br />
Dim x As Single<br />
x = InputBox("請輸入視力檢測值", "視力檢測")<br />
If x > 0.8 And x
題目說明:判斷月份為大月或小月<br />
檔案名稱:<strong>03</strong> \ ch5 \ P.139-2<br />
表單:<br />
程式碼:<br />
Private Sub Form_Activate()<br />
Dim m As Integer<br />
m = InputBox("請輸入月份:", "月份輸入")<br />
If m = 1 Or m = 3 Or m = 5 Or m = 7 Or m = 8 Or m = 10 Or m = 12 Then<br />
MsgBox m & "月是大月", , "月份判斷"<br />
Else<br />
MsgBox m & "月是小月", , "月份判斷"<br />
End If<br />
End Sub<br />
執行結果:ex.輸入 1
題目說明:依據年齡層來判斷可觀賞的影片等級;未滿 6 歲可觀賞普遍級,未<br />
滿 12 歲可觀賞普遍級及保護級,未滿 18 歲可觀賞非限制級的影片,<br />
18 歲(含)以上則可觀賞各級影片<br />
檔案名稱:<strong>03</strong> \ ch5 \ P.144<br />
表單:<br />
程式碼:<br />
Private Sub Form_Activate()<br />
Dim age As Integer<br />
age = InputBox("請輸入年齡:", "年齡")<br />
If age < 6 Then<br />
MsgBox "可以觀看普遍級", , "可觀賞的 level"<br />
Else<br />
If age < 12 Then<br />
MsgBox "可以觀看普遍級或保護及", , "可觀賞的 level"<br />
Else<br />
If age < 18 Then<br />
MsgBox "可以觀看限制級以外的影訊", , "可觀賞的 level"<br />
Else<br />
MsgBox "可以看各級影片", , "可觀看的 level"<br />
End If<br />
End If<br />
End If<br />
End Sub<br />
執行結果:ex.輸入 17
題目說明:依據體重來判斷男子跆拳道選手的參賽級別;體重介於 59~63(不含)<br />
公斤為輕量級,68~73(不含)公斤為中量級,73~78(含)為重量級<br />
檔案名稱:<strong>03</strong> \ ch5 \ P.145<br />
表單:<br />
程式碼:<br />
Private Sub Form_Activate()<br />
Dim kg As Integer<br />
kg = InputBox("請輸入體重", "體重輸入")<br />
If kg >= 59 And kg < 63 Then<br />
MsgBox "輕量級", , "參賽級別"<br />
Else<br />
If kg >= 63 And kg < 73 Then<br />
MsgBox "中量級", , "參賽級別"<br />
Else<br />
If kg >= 73 Then<br />
MsgBox "重量級", , "參賽級別"<br />
End If<br />
End If<br />
End If<br />
End Sub<br />
執行結果:
題目說明:依據使用者輸入個人的身高、體重、及性別,來計算肥胖指數(Body<br />
Mass Index,BMI),以判斷使用者是否肥胖<br />
檔案名稱:<strong>03</strong> \ ch5 \ P.148<br />
表單:<br />
程式碼:<br />
Private Sub Command1_Click()<br />
Dim h As Single, w As Single, bmi As Single<br />
h = Val(Text1.Text) / 100<br />
w = Val(Text2.Text)<br />
bmi = Format(w / (h ^ 2), "##.#")<br />
If (h >= 1 And h = 10 And w
題目說明:請利用巢狀 IF 判斷敘述,撰寫一個可依據輸入之年齡來判斷及顯示<br />
所屬年齡層代稱的程式。13 歲(含)以下為童年;14~19 歲為少年;<br />
20~30 為青年;31~55 為壯年;56(含)以上為老年<br />
檔案名稱:<strong>03</strong> \ ch5 \ P.153<br />
表單:<br />
程式碼:<br />
Private Sub Form_Activate()<br />
Dim age As Integer<br />
age = InputBox("年齡輸入", "年齡")<br />
If age = 14 And age = 20 And age = 31 And age = 56 Then<br />
MsgBox "老年", , "判斷年齡層"<br />
End Sub<br />
執行結果:<br />
End If<br />
End If<br />
End If<br />
End If<br />
End If
題目說明:依據使用者輸入的職棒球隊名稱,判斷球隊的吉祥物。興農隊的吉<br />
祥物為牛;中信隊的吉祥物為鯨;LaNew 隊的吉祥物為熊;兄弟隊<br />
的吉祥物為象;統一隊的吉祥物為獅;誠泰隊的吉祥物為蛇<br />
檔案名稱:<strong>03</strong> \ ch5 \ P.159<br />
表單:<br />
程式碼:<br />
Private Sub Command1_Click()<br />
Dim name As String<br />
name = Text1.Text<br />
Select Case name<br />
Case Is = "興農"<br />
Option1.Value = True<br />
Case Is = "中信"<br />
Option2.Value = True<br />
Case Is = "LaNew"<br />
Option3.Value = True<br />
Case Is = "兄弟"<br />
Option4.Value = True<br />
Case Is = "統一"<br />
Option5.Value = True<br />
Case Is = "誠泰"<br />
Option6.Value = True<br />
Case Else<br />
MsgBox "無此球隊,請重新輸入", , "輸入有誤"<br />
Text1.Text = ""<br />
Text1.SetFocus<br />
End Select<br />
End Sub<br />
Private Sub Command2_Click()<br />
Text1.Text = ""<br />
Text1.SetFocus<br />
End Sub<br />
執行結果:ex.輸入興農
題目說明:請利用 Select Case 判斷敘述,撰寫可依據輸入之智力測驗成績來判<br />
斷及顯示智力等級的程式。80~110 分為正常智力;111~120 分為高<br />
智力;121~140 分為極高智力;141 則為天才。<br />
檔案名稱:<strong>03</strong> \ ch5 \ P.165<br />
表單:<br />
程式碼:<br />
Private Sub Form_Activate()<br />
Dim s As Integer<br />
s = InputBox("請輸入智力測驗成績:", "測驗成績判斷")<br />
Select Case s<br />
Case 80 To 110<br />
MsgBox "正常智力", , "測驗成果"<br />
Case 111 To 120<br />
MsgBox "高智力", , "測驗結果"<br />
Case 121 To 140<br />
MsgBox "極高智力", , "測驗結果"<br />
Case Is >= 141<br />
MsgBox "天才", , "測驗結果"<br />
End Select<br />
End Sub<br />
執行結果:ex.輸入 120
題目說明:利用 Select Case 敘述及 If-Then-Else 敘述設計一個星座查詢的程式。<br />
摩羯座 12/22~01/19、水瓶座 01/20~02/19、雙魚座 02/20~<strong>03</strong>/20、牡<br />
羊座 <strong>03</strong>/21~04/20、金牛座 04/21~05/20、雙子座 05/21~06/21、巨蟹<br />
座 06/22~07/22、獅子座 07/23~08/22、處女座 08/23~09/22、天秤座<br />
09/23~10/22、天蠍座 10/23~11/21、射手座 11/22~12/21<br />
檔案名稱:<strong>03</strong> \ ch5 \ P.167<br />
表單:<br />
程式碼:<br />
Private Sub Command1_Click()<br />
Dim m, d As String<br />
m = Text1.Text<br />
d = Text2.Text<br />
Select Case m<br />
Case 1<br />
If d >= 19 Then Option9.Value = True<br />
If d = 19 Then Option9.Value = True<br />
If d 20 Then Option1.Value = True<br />
Case 4<br />
If d < 21 Then Option1.Value = True<br />
If d > 20 Then Option4.Value = True<br />
Case 5<br />
If d < 21 Then Option4.Value = True<br />
If d > 20 Then Option7.Value = True<br />
Case 6<br />
If d < 22 Then Option7.Value = True<br />
If d > 21 Then Option10.Value = True<br />
Case 7<br />
If d < 23 Then Option2.Value = True<br />
If d > 22 Then Option10.Value = True<br />
Case 8<br />
If d < 23 Then Option2.Value = True
If d > 22 Then Option5.Value = True<br />
Case 9<br />
If d < 23 Then Option5.Value = True<br />
If d > 22 Then Option8.Value = True<br />
Case 10<br />
If d < 23 Then Option8.Value = True<br />
If d > 22 Then Option11.Value = True<br />
Case 11<br />
If d < 22 Then Option11.Value = True<br />
If d > 21 Then Option3.Value = True<br />
Case 12<br />
If d < 22 Then Option3.Value = True<br />
If d > 21 Then Option6.Value = True<br />
End Select<br />
End Sub<br />
執行結果:ex.輸入 9 月 1 日查詢
題目說明:利用 Select Case 敘述設計一個運勢占卜的程式。<br />
檔案名稱:<strong>03</strong> \ ch5 \ P.168<br />
表單:<br />
程式碼:<br />
Private Sub Command1_Click()<br />
n = Int(Rnd() * 6) + 1<br />
Select Case n<br />
Case 1<br />
Text1.Text = "下下籤:諸事不宜"<br />
Case 2<br />
Text1.Text = "中上籤:會有貴人相助"<br />
Case 3<br />
Text1.Text = "中下籤:口舌之爭"<br />
Case 4<br />
Text1.Text = "平籤:保持平常心"<br />
Case 5<br />
Text1.Text = "平籤:沒事就是好事"<br />
Case 6<br />
Text1.Text = "上上籤:意外之財降臨"<br />
End Select<br />
End Sub<br />
Private Sub Command2_Click()<br />
End<br />
End Sub<br />
執行結果:
題目說明:輸出由”*” 號所組成的 10 層三角形圖案,第 1 列輸出 1 個”*” 號,<br />
第 2 列輸出 2 個”*” 號,…以此類推,第 10 列輸出 10 個”*”號<br />
檔案名稱:<strong>03</strong> \ ch6 \ P.171<br />
表單:<br />
程式碼:<br />
Private Sub Form_Activate()<br />
Dim i As Integer<br />
For i = 1 To 10<br />
Print String(i, "*")<br />
Next i<br />
End Sub<br />
執行結果:
題目說明:計算 1 加到 10 的總合<br />
檔案名稱:<strong>03</strong> \ ch6 \ P.172-1<br />
表單:<br />
程式碼:<br />
Private Sub Form_Activate()<br />
Dim i As Integer, sum As Integer<br />
sum = 0<br />
For i = 1 To 10<br />
sum = sum + i<br />
Next i<br />
MsgBox "1+2+3+ ... + 10 = " & sum, , "計算 1 加到 10 的總合"<br />
End Sub<br />
執行結果:
題目說明:計算 1~100 的偶數總合<br />
檔案名稱:<strong>03</strong> \ ch6 \ P.172-1 延伸<br />
表單:<br />
程式碼:<br />
Private Sub Form_Activate()<br />
Dim i As Integer, sum As Integer<br />
sum = 0<br />
For i = 0 To 100 Step 2<br />
sum = sum + i<br />
Next i<br />
MsgBox "1~100 的偶數總合為" & sum, , "計算"<br />
End Sub<br />
執行結果:
題目說明:1~300,3 的倍數有幾個、總合為?<br />
檔案名稱:<strong>03</strong> \ ch6 \ P.172-1 延伸 2<br />
表單:<br />
程式碼:<br />
Private Sub Form_Activate()<br />
Dim i As Integer, sum As Integer<br />
sum = 0<br />
For i = 1 To 300<br />
If i Mod 3 = 0 Then<br />
n = n + 1<br />
sum = sum + i<br />
List1.AddItem i<br />
End If<br />
Next i<br />
Print "1~300,3 的倍數有 " & n & " 個": Print "總合為" & sum<br />
End Sub<br />
執行結果:
題目說明:1+2-3+4+5-6.....97+98-99 的總合為?<br />
檔案名稱:<strong>03</strong> \ ch6 \ P.172-1 延伸 3<br />
表單:<br />
程式碼:<br />
Private Sub Form_Activate()<br />
Dim i As Integer, sum As Integer<br />
sum = 0<br />
For i = 1 To 99<br />
If i Mod 3 = 0 Then sum = sum - i<br />
If i Mod 3 0 Then sum = sum + i<br />
Next i<br />
Print "1+2-3+4+5-6.....97+98-99 的總合為 " & sum<br />
End Sub<br />
執行結果:
題目說明:依據使用者連續輸入 5 科段考成績,來計算段考總分、最高成績、<br />
與及格的科目數<br />
檔案名稱:<strong>03</strong> \ ch6 \ P.175<br />
表單:<br />
程式碼:<br />
Private Sub Command1_Click()<br />
Dim i As Integer, score As Integer, sum As Integer, max As Integer, n As Integer<br />
sum = 0<br />
max = 0<br />
n = 0<br />
Text1.Text = "成績資料:"<br />
For i = 1 To 5<br />
score = Val(InputBox("請輸入成績", "簡易成績統計"))<br />
sum = sum + score<br />
Text1.Text = Text1.Text & score & Space(3)<br />
If score > max Then max = score<br />
If score >= 60 Then n = n + 1<br />
Next i<br />
If Check1.Value = 1 Then Text1.Text = Text1.Text & vbCrLf + "總分為" & sum & "<br />
分"<br />
If Check2.Value = 1 Then Text1.Text = Text1.Text & vbCrLf + "最高分為" & max<br />
& "分"<br />
If Check3.Value = 1 Then Text1.Text = Text1.Text & vbCrLf + "及格科數為" & n<br />
& "科"<br />
End Sub<br />
執行結果:
題目說明:設計一個可在表單上顯示 5 個隨機產生的數字,並在 3 秒後自動隱<br />
藏數字,讓使用者考燕自己記憶能力的程式<br />
檔案名稱:<strong>03</strong> \ ch6 \ P.186<br />
表單:<br />
程式碼:<br />
Private Sub Command1_Click()<br />
Dim I As Integer, N As Integer<br />
Randomize<br />
I = 1<br />
While I
題目說明:利用 While-Wend 迴圈敘述及 If-Then-Else 判斷敘述,設計一個猜數<br />
字遊戲的程式(預設數字為 176)<br />
檔案名稱:<strong>03</strong> \ ch 6\ P.192<br />
表單:<br />
程式碼:<br />
Private Sub Form_Activate()<br />
Dim pwd As Integer<br />
Dim cpwd As Integer<br />
cpwd = 176<br />
pwd = 0<br />
While pwd < 1000<br />
pwd = InputBox("請輸入一個 3 位數的整數資料", "猜數字遊戲")<br />
If pwd = cpwd Then<br />
MsgBox "恭喜猜對了", , "猜數字遊戲": End<br />
Else<br />
If pwd > cpwd Then<br />
MsgBox "輸入的整數太大,請再輸入一次", , "猜數字遊戲"<br />
Else<br />
MsgBox "輸入的整數太小,請再輸入一次", , "猜數字遊戲"<br />
End If<br />
End If<br />
Wend<br />
End Sub<br />
執行結果:ex.輸入 176
題目說明:反向輸出字串中的字元<br />
檔案名稱:<strong>03</strong> \ ch6 \ P.194<br />
表單:<br />
程式碼:<br />
Private Sub Form_Activate()<br />
Dim i As Integer, word As String, reword As String<br />
word = InputBox("請輸入任意字串", "字串反轉")<br />
i = Len(word)<br />
Do While i >= 1<br />
reword = reword + Mid(word, i, 1)<br />
i = i - 1<br />
Loop<br />
MsgBox word & "反轉後為" & reword, , "字串反轉"<br />
End Sub<br />
執行結果:
題目說明:設計一個可隨機產生 4 個介於 0~9 之間的整數,以模擬四星彩公益<br />
彩卷開獎的程式<br />
檔案名稱:<strong>03</strong> \ ch6 \ P.201<br />
表單:<br />
程式碼:<br />
Private Sub Command1_Click()<br />
Dim I As Integer, N As Integer<br />
Randomize<br />
I = 1<br />
Do While I
題目說明:使用一為陣列來儲存某年度 1~12 月的手機費用<br />
檔案名稱:<strong>03</strong> \ ch7 \ P.222<br />
表單:<br />
程式碼:<br />
Private Sub Form_Activate()<br />
Dim bill(1 To 12) As Integer<br />
Dim i As Integer<br />
Dim sum As Integer<br />
For i = 1 To 12<br />
bill(i) = InputBox("請輸入" & i & "月的手機費:", "手機費輸入")<br />
sum = sum + bill(i)<br />
Next i<br />
MsgBox "今年度的手機費共繳了" & sum & "元", , "統計手機費"<br />
End Sub<br />
執行結果:ex.輸入 1~12 月每次 100
題目說明:從 5 個常見的中文電腦術語中,隨機顯示一個術語上在表單上,讓<br />
使用者在清單中點選相對應的英文電腦術語<br />
檔案名稱:<strong>03</strong> \ ch 7\ P.223<br />
表單:<br />
程式碼:<br />
Dim n As Integer<br />
Private Sub Form_Load()<br />
Dim i As Integer<br />
Dim chi(1 To 5) As String<br />
Dim eng(1 To 5) As String<br />
chi(1) = "電腦輔助教學軟體": eng(1) = "CAI"<br />
chi(2) = "中央處理單元": eng(2) = "CPU"<br />
chi(3) = "隨機存取記憶體": eng(3) = "RAM"<br />
chi(4) = "全球資訊網": eng(4) = "WWW"<br />
chi(5) = "區域網路": eng(5) = "LAN"<br />
Randomize<br />
n = Int(Rnd() * 5) + 1<br />
Label2.Caption = Label2.Caption + chi(n) + "<br />
=>>>>>>>>>>>>>>>>>>>>>>"<br />
For i = 1 To 5<br />
List1.AddItem eng(i)<br />
Next i<br />
End Sub<br />
Private Sub Command1_Click()<br />
If List1.ListIndex + 1 = n Then<br />
Label3.Caption = "答對了"<br />
Else<br />
Label3.Caption = "答錯了"<br />
End If<br />
End Sub<br />
執行結果:
題目說明:用一維陣列設計一個可用來輸入及查詢程式語言成績的程式<br />
檔案名稱:<strong>03</strong> \ ch7 \ P.229<br />
表單:<br />
程式碼:<br />
Dim A(1 To 50) As Integer<br />
Private Sub Command1_Click()<br />
Dim i As Integer<br />
i = Text1.Text<br />
A(i) = Text2.Text<br />
Text1 = ""<br />
Text2 = ""<br />
Text1.SetFocus<br />
End Sub<br />
Private Sub Command2_Click()<br />
j = Text1.Text<br />
i = j<br />
Text2.Text = A(i)<br />
End Sub<br />
執行結果:ex.輸入座號 3 成績 80 , 輸入 3 按查詢
題目說明:利用一維陣列來儲存使用者輸入的 5 個資料,並找出陣列資料中最<br />
大值和最小值<br />
檔案名稱:<strong>03</strong> \ ch7 \ P.229-1<br />
表單:<br />
程式碼:<br />
Dim max, min, n, A(1 To 5) As Integer<br />
Private Sub Command1_Click()<br />
n = n + 1<br />
A(n) = InputBox("請輸第" & n & "個數值", "數值輸入")<br />
If Val(A(n)) > max Then max = A(n)<br />
If Val(A(n)) < min Then min = A(n)<br />
Text1 = Text1 & " 第 " & n & " 個是 " & A(n) & vbCrLf<br />
End Sub<br />
Private Sub Command2_Click()<br />
Text1 = Text1 & " 最大的是 " & max & vbCrLf<br />
End Sub<br />
Private Sub Command3_Click()<br />
Text1 = Text1 & " 最小的是 " & min & vbCrLf<br />
End Sub<br />
Private Sub Form_Load()<br />
min = 10000: n = 0<br />
End Sub<br />
執行結果:
題目說明:輸入並儲存北、中、南三區某年 1~12 月的雨量資料<br />
檔案名稱:<strong>03</strong> \ ch7 \ P.232<br />
表單:<br />
程式碼:<br />
Private Sub Command1_Click()<br />
Dim rain(1 To 3, 1 To 12) As Single<br />
For i = 1 To 3<br />
For j = 1 To 12<br />
Select Case i<br />
Case 1: rain(i, j) = Val(InputBox("請輸入北區" & j & "月的雨量", "雨量<br />
輸入"))<br />
Case 2: rain(i, j) = Val(InputBox("請輸入中區" & j & "月的雨量", "雨量<br />
輸入"))<br />
Case 3: rain(i, j) = Val(InputBox("請輸入南區" & j & "月的雨量", "雨量<br />
輸入"))<br />
End Select<br />
Next j<br />
Next i<br />
End Sub<br />
執行結果:連續輸入 12*3 次 50 的雨量
題目說明:利用氣泡排序法將 5 個大小不同的資料,由小到大排序的程式碼<br />
檔案名稱:<strong>03</strong> \ ch8 \ P.255<br />
表單:<br />
程式碼:<br />
Private Sub Form_Activate()<br />
Dim A(0 To 4) As Integer<br />
A(0) = 20<br />
A(1) = 5<br />
A(2) = 30<br />
A(3) = 40<br />
A(4) = 15<br />
Print "排列之前"<br />
For i = 0 To 4<br />
Print A(i) & Space(3);<br />
Next i<br />
Print<br />
For i = 1 To (5 - 1)<br />
For j = 0 To (4 - i)<br />
If A(j) > A(j + 1) Then<br />
temp = A(j)<br />
A(j) = A(j + 1)<br />
A(j + 1) = temp<br />
End If<br />
Next j<br />
Next i<br />
Print "排列之後"<br />
For i = 0 To 4<br />
Print A(i) & Space(3);<br />
Next i<br />
End Sub<br />
執行結果:
題目說明:利用循序搜尋法搜尋資料 15 的程式碼<br />
檔案名稱:<strong>03</strong> \ ch7 \ P.264<br />
表單:<br />
程式碼:<br />
Private Sub Form_Activate()<br />
Dim A(1 To 5) As Integer<br />
A(1) = 5<br />
A(2) = 30<br />
A(3) = 40<br />
A(4) = 15<br />
A(5) = 10<br />
i = 1<br />
Target = 15<br />
Do<br />
If Target = A(i) Then<br />
Print "找到數值 15"<br />
Exit Do<br />
End If<br />
i = i + 1<br />
If i > 5 Then<br />
Print "找不到數值 15"<br />
Exit Do<br />
End If<br />
Loop<br />
End Sub<br />
執行結果:
題目說明:利用二元搜尋法尋找資料 30 的程式碼<br />
檔案名稱:<strong>03</strong> \ ch7 \ P.266<br />
表單:<br />
程式碼:<br />
Private Sub Form_Activate()<br />
Dim A(1 To 6) As Integer<br />
A(1) = 5<br />
A(2) = 10<br />
A(3) = 15<br />
A(4) = 20<br />
A(5) = 30<br />
A(6) = 40<br />
Target = 30<br />
L = 1: R = 6: Result = "找不到"<br />
While L Target Then<br />
R = M - 1<br />
Else<br />
L = M + 1<br />
End If<br />
End If<br />
Wend<br />
MsgBox Result & Target<br />
End Sub<br />
執行結果:
題目說明:計算 1 加到 N 的總和<br />
檔案名稱:<strong>03</strong> \ ch9 \ P.10<br />
表單:<br />
程式碼:<br />
Sub N_Sum(a As Integer)<br />
Dim sum As Integer, i As Integer<br />
sum = 0<br />
For i = 1 To a<br />
sum = sum + i<br />
Next i<br />
MsgBox "1+2+3..+" & a & " = " & sum, , "1+2+3+... n 總合"<br />
End Sub<br />
Private Sub Form_Activate()<br />
Dim N As Integer<br />
N = InputBox("請輸入 N 值", "數值累加")<br />
Call N_Sum(N)<br />
End Sub<br />
執行結果:
題目說明:計算標準體重<br />
檔案名稱:<strong>03</strong> \ ch9 \ P.12<br />
表單:<br />
程式碼:<br />
Sub Cal_sw(S_sex As String, S_ht As Single)<br />
Dim sw As Single<br />
If S_sex = "M" Then sw = (S_ht - 80) * 0.7<br />
If S_sex = "F" Then sw = (S_ht - 70) * 0.6<br />
MsgBox "您的標準體重為" & sw, , "計算標準體重"<br />
SWT = InputBox("請輸入體重(KG)", "判斷是否過重")<br />
If SWT > sw Then<br />
MsgBox "您的體重超出標準體重", , "判斷是否過重"<br />
Else<br />
MsgBox "您的體重未超出標準體重", , "判斷是否過重"<br />
End If<br />
End Sub<br />
Private Sub Form_Activate()<br />
Dim ht As Single, sex As String * 1<br />
sex = InputBox("請輸入性別,男性輸入 M,女性輸入 F", "計算標準體重")<br />
ht = InputBox("請輸入身高(cm):", "計算標準體重")<br />
Call Cal_sw(sex, ht)<br />
End Sub<br />
執行結果:
題目說明:簡易售票系統<br />
檔案名稱:<strong>03</strong> \ ch9 \ P.15<br />
表單:<br />
程式碼:<br />
Sub cal_price(i As Integer, j As Integer)<br />
Dim price As Integer, sum As Integer<br />
Dim area As String<br />
price = 600<br />
Select Case i<br />
Case 0, 2<br />
area = "搖滾 A/C 區"<br />
price = price * 2.5<br />
Case 1<br />
area = "搖滾 B 區"<br />
price = price * 3<br />
Case 3, 5<br />
area = "看台 A/C 區"<br />
price = price * 1.5<br />
Case 4<br />
area = "看台 B 區"<br />
price = price * 2<br />
End Select<br />
sum = j * price<br />
If j >= 10 Then sum = sum * 0.9<br />
Label3.Caption = j & "張" & area & "票,總計" & sum & " 元 "<br />
End Sub
Private Sub Command1_Click(Index As Integer)<br />
Dim count As Integer<br />
count = InputBox("請輸入所要購買的票數", "購買票數")<br />
Call cal_price(Index, count)<br />
End Sub<br />
執行結果:
題目說明:計算圓面積<br />
檔案名稱:<strong>03</strong> \ ch9 \ P.25<br />
表單:<br />
程式碼:<br />
Function cal_circle(r As Single) As Single<br />
Const pi = 3.14159<br />
cal_circle = r ^ 2 * pi<br />
End Function<br />
Private Sub Form_Activate()<br />
Dim x As Single<br />
Dim area As Single<br />
x = InputBox("請輸入圓的半徑", "計算園面積")<br />
area = cal_circle(x)<br />
MsgBox "半徑為" & x & "的面積為" & area, , "計算圓面積"<br />
End Sub<br />
執行結果:
題目說明:計算手機通話費<br />
檔案名稱:<strong>03</strong> \ ch9 \ P.33<br />
表單:<br />
程式碼:<br />
Function mbill(F_case As Integer, F_sec As Integer) As Integer<br />
Dim rate As Single, fee As Integer, total As Integer<br />
Select Case F_case<br />
Case 0<br />
rate = 0.13<br />
fee = 88<br />
Case 1<br />
rate = 0.12<br />
fee = 188<br />
Case 2<br />
rate = 0.11<br />
fee = 288<br />
Case 3<br />
rate = 0.09<br />
fee = 588<br />
End Select<br />
total = rate * F_sec<br />
If total < fee Then<br />
mbill = fee<br />
Else<br />
mbill = total
End If<br />
End Function<br />
Private Sub Command1_Click()<br />
Dim bcase As Integer, sec As Integer, bill As Integer<br />
bcase = Combo1.ListIndex<br />
sec = Int(Text1.Text) * 60<br />
bill = mbill(bcase, sec)<br />
Label4.Caption = "通話費為:" & bill & "元"<br />
End Sub<br />
Private Sub Form_Load()<br />
Combo1.AddItem " 88 元"<br />
Combo1.AddItem "188 元"<br />
Combo1.AddItem "288 元"<br />
Combo1.AddItem "588 元"<br />
End Sub<br />
執行結果:
題目說明:比較利用 Print#敘述與 Write#敘述的寫入格式差異<br />
檔案名稱:<strong>03</strong> \ ch12 \ P.150<br />
表單:<br />
程式碼:<br />
Private Sub Form_Activate()<br />
Open "d:\<strong>03</strong>\<strong>03</strong>.txt" For Output As #1<br />
Print #1, "蔡壹零的生日是"; #2/24/1978#<br />
Print #1,<br />
Print #1, "電話", 123456<br />
Close<br />
'<br />
Open "d:\<strong>03</strong>\<strong>03</strong>.txt" For Append As #1<br />
Write #1, "蔡壹零的生日是"; #2/24/1978#<br />
Write #1,<br />
Write #1, "電話", 123456<br />
Close<br />
End Sub<br />
執行結果:
題目說明:要逐句讀取已建立之循序檔”data152”的資料內容,並將所讀取到的<br />
資料顯示於表單上<br />
檔案名稱:<strong>03</strong> \ ch12 \ P.152<br />
表單:<br />
程式碼:<br />
Private Sub Form_Activate()<br />
Dim x As String<br />
Open App.Path & "\data152.txt" For Input As #1<br />
Do While Not EOF(1)<br />
x = Input(1, #1)<br />
Print x;<br />
Loop<br />
Close<br />
End Sub<br />
執行結果:
題目說明:利用 Line Input#敘述來讀取循序檔”data153”<br />
檔案名稱:<strong>03</strong> \ ch12 \ P.153<br />
表單:<br />
程式碼:<br />
Private Sub Form_Activate()<br />
Dim x As String<br />
Open "d:\<strong>03</strong>\<strong>03</strong>.txt" For Input As #1<br />
Do While Not EOF(1)<br />
Line Input #1, x<br />
Print x<br />
Loop<br />
Close<br />
End Sub<br />
執行結果:
題目說明:利用 Input#敘述來讀取循序檔”data154”<br />
檔案名稱:<strong>03</strong> \ ch12 \ P.154<br />
表單:<br />
程式碼:<br />
Private Sub Form_Activate()<br />
Dim x As String<br />
Open App.Path & "\data154.txt" For Input As #1<br />
Do While Not EOF(1)<br />
Input #1, x<br />
Print x<br />
Loop<br />
Close<br />
End Sub<br />
執行結果:
題目說明:將學生資料寫入至隨機檔”random”中<br />
檔案名稱:<strong>03</strong> \ ch12 \ P.164<br />
表單:<br />
程式碼:<br />
Private Type record<br />
no As String * 6<br />
name As String * 8<br />
score As Integer<br />
End Type<br />
Dim student As record<br />
Dim file_no As Integer<br />
Private Sub Command1_Click()<br />
Static i As Integer<br />
i = i + 1<br />
student.no = Text1(0).Text<br />
student.name = Text1(1).Text<br />
student.score = Val(Text1(2).Text)<br />
Put #file_no, i, student<br />
End Sub<br />
Private Sub Form_Activate()<br />
file_no = FreeFile<br />
Open App.Path & "\random" For Random As #file_no Len = Len(student)<br />
End Sub<br />
執行結果:
題目說明:設計一個可讓使用者開啟文字檔案(副檔名為”*.txt”),並在文字方塊<br />
中瀏覽其內容的程式<br />
檔案名稱:<strong>03</strong> \ ch12 \ P.183<br />
表單:<br />
程式碼:<br />
Private Sub Dir1_Change()<br />
File1.path = Dir1.path<br />
End Sub<br />
Private Sub Drive1_Change()<br />
Dir1.path = Drive1.Drive<br />
End Sub<br />
Private Sub File1_Click()<br />
Dim path As String<br />
Dim aline As String<br />
Dim alldata As String<br />
If Right(File1.path, 1) "\" Then<br />
path = File1.path & "\" & File1.FileName<br />
Else
path = File1.path & File1.FileName<br />
End If<br />
Open path For Input As #1<br />
Do While Not EOF(1)<br />
Line Input #1, aline<br />
alldata = alldata & aline & vbCrLf<br />
Loop<br />
Text1.Text = alldata<br />
Close #1<br />
End Sub<br />
執行結果:
題目說明:製作一個圖片瀏覽器,始程式可瀏覽圖片(副檔名為”*.jpg”)的<br />
檔案名稱:<strong>03</strong> \ ch12 \ P.186<br />
表單:<br />
程式碼:<br />
Private Sub Dir1_Change()<br />
File1.path = Dir1.path<br />
End Sub<br />
Private Sub Drive1_Change()<br />
Dir1.path = Drive1.Drive<br />
End Sub<br />
Private Sub File1_Click()<br />
Dim path As String<br />
Dim aline As String<br />
Dim alldata As String<br />
If Right(File1.path, 1) "\" Then<br />
path = File1.path & "\" & File1.FileName<br />
Else<br />
path = File1.path & File1.FileName
End If<br />
Image1.Picture = LoadPicture(path)<br />
End Sub<br />
執行結果:
題目說明:一、請讓使用者輸入兩個整數 A.B 並計算 A 到 B 之間,間隔為 5<br />
的各數之和<br />
檔案名稱:<strong>03</strong>\exam\9821\1<br />
表單:<br />
程式碼:<br />
Private Sub Command1_Click()<br />
Dim a, b, i, s, t As Integer<br />
a = Val(Text1): b = Val(Text2): s = 0<br />
If a > b Then t = a: a = b: b = t<br />
For i = a To b Step 5<br />
s = s + i<br />
Next i<br />
Text3 = s<br />
End Sub<br />
Private Sub Command2_Click()<br />
Text1 = ""<br />
Text2 = ""<br />
Text3 = ""<br />
End Sub<br />
執行結果:
題目說明:試計算1 連續加至91,增量值為2,但若為7 的倍數則不加反減,最<br />
後將和輸出<br />
檔案名稱:<strong>03</strong>\exam\9821\2<br />
表單:<br />
程式碼:<br />
Private Sub Command1_Click()<br />
Dim s, i As Integer<br />
s = 0<br />
For i = 1 To 91 Step 2<br />
If i Mod 7 = 0 Then<br />
s = s - i<br />
Else<br />
s = s + i<br />
End If<br />
Next i<br />
Text1 = s<br />
End Sub<br />
執行結果:
題目說明:請利用 Do-Loop 敘述,撰寫計算 Q!的程式。<br />
檔案名稱:<strong>03</strong>\exam\9821\3<br />
表單:<br />
程式碼:<br />
Private Sub Command1_Click()<br />
Dim n, i As Long, s As Long<br />
n = Val(Text1): s = 1: i = 2<br />
Do<br />
s = s * i '會溢位==<br />
i = i + 1<br />
If i = n + 1 Then Exit Do<br />
Loop<br />
Text2 = s<br />
End Sub<br />
執行結果:
題目說明:請撰寫一個能於ListBox 中產生連續學號之程式:共(260 個學號)(學<br />
號組成結構為: A~Z | 8912 | 0~9 )<br />
檔案名稱:<strong>03</strong>\exam\9821\4<br />
表單:<br />
程式碼:<br />
Private Sub Form_Activate()<br />
For i = 65 To 90<br />
For j = 0 To 9<br />
List1.AddItem Chr(i) & "8912" & j<br />
Next j<br />
Next i<br />
End Sub<br />
執行結果:
題目說明:請撰寫能隨機產生一組長度為6,並為數字、大寫英文字母、小寫英<br />
文字母三者隨機混雜的密碼程式<br />
檔案名稱:<strong>03</strong>\exam\9821\5<br />
表單:<br />
程式碼:<br />
Private Sub Command1_Click()<br />
Dim str1 As String, x, i, n As Integer<br />
Randomize: str1 = ""<br />
For i = 1 To 6<br />
n = Int(Rnd() * 3) + 1<br />
Select Case n<br />
Case 1: x = Int(Rnd() * 10): str1 = str1 & x<br />
Case 2: x = Int(Rnd() * 26) + 65: str1 = str1 & Chr(x)<br />
Case 3: x = Int(Rnd() * 26) + 97: str1 = str1 & Chr(x)<br />
End Select<br />
Next i<br />
Text1 = str1<br />
End Sub<br />
執行結果:
題目說明:請撰寫一個能將使用者輸入的字串,採先取出偶數字位元,再取出奇<br />
數位字元之順序,將之重新組合的程式。<br />
檔案名稱:<strong>03</strong>\exam\9821\6<br />
表單:<br />
程式碼:<br />
Private Sub Command1_Click()<br />
Dim x, str1, str2 As String<br />
x = Text1<br />
str1 = "": str2 = ""<br />
For i = 1 To Len(x)<br />
If i Mod 2 = 0 Then<br />
str1 = str1 & Mid(x, i, 1)<br />
Else<br />
str2 = str2 & Mid(x, i, 1)<br />
End If<br />
Next i<br />
Text2 = str1 + str2<br />
End Sub<br />
執行結果: