06.08.2013 Views

03 林家民

03 林家民

03 林家民

SHOW MORE
SHOW LESS

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 />

執行結果:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!