版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Visual Basic 程序設計教程,機械工業(yè)出版社同名教材配套電子教案,2003 年 6月,,第5章 循環(huán)結構程序設計,5.1 循環(huán)結構程序設計的概念5.2 Do…Loop語句 5.2.1 前測型Do…Loop循環(huán) 5.2.2 后測型Do…Loop循環(huán) 5.3 For...Next語句5.4 列表框與組合框 5.4.1 列表框 5.4.2 組合框 5.4 算法舉例習題五,
2、,,5.2.1 前測型Do…Loop循環(huán),其語法為Do [{ While | Until }〈條件〉] [〈語句列1〉] [Exit Do] [〈語句列2〉]Loop,【例5-1】求累加和1 + 2 + 3 +…+ 100(如圖5-2)。,,設計步驟如下: 窗體界面的設計參見前面章節(jié),這里僅給出命令按鈕的Click事件代碼:Private Sub Command1_Click() Dim s As
3、Integer, n As Integer s = 0: n = 1 Do While n <= 100 s = s + n n = n + 1 Loop Label2.Caption = "1+2+3+…+100 = " & sEnd Sub,還可以改為直到型:Private Sub Command1_Click() Dim s As Integer, n As
4、 Integer s = 0: n = 1 Do Until n > 100 s = s + n n = n + 1 Loop Label2.Caption = "1+2+3+…+100 = " & sEnd Sub,【例5-2】輸入一個正整數(shù),利用“當型”循環(huán)判斷是否素數(shù)。,,設計步驟如下: 窗體界面的設計參見前面章節(jié),這里給出命令按鈕的Click事件代碼:
5、Private Sub Command1_Click() Dim n As Long Select Case Val(Text1.Text) Case Is 2147483647 MsgBox "此數(shù)太大!", vbInformation + vbOKOnly, "注意" Case Else n = Val(Text1.Text) s
6、= 0: i = 2,Do While i <= Sqr(n) And s = 0 If n Mod i = 0 Then s = 1 Else i = i + 1 End If Loop If s = 0 Then a = "是一個素數(shù)" Else a =
7、 "不是素數(shù)" End If Label1.Caption = Str(n) & a End Select Text1.SetFocusEnd Sub,另外,為了使用文本框得到焦點后,文本立即被選中,編寫Text1的GotFocus事件代碼如下:Private Sub Text1_GotFocus() Text1.SelStart = 0 Text1.SelLeng
8、th = Len(Text1.Text)End Sub,5.2.2 后測型Do…Loop循環(huán),其語法為Do [〈語句列1〉] [Exit Do] [〈語句列2〉]Loop [{While | Until} 〈條件〉],【例5-3】輸入有效數(shù)字的位數(shù),利用下述公式計算圓周率π的近似值:,,設計步驟如下: (1) 建立應用程序用戶界面與設置對象屬性。 (2) 編寫程序代碼。根據(jù)流程圖,可以寫出命令
9、按鈕Command1的Click事件代碼為Private Sub Command1_Click() Dim m As Integer m = Val(Text1.Text) p = 0#: s = 2#: e = 0.1 ^ m Do t = s : p = Sqr(2 + p) : s = s * 2 / p Loop Until Abs(t – s) < 0.1 ^ m f = String(
10、m – 1, "#") Text2.Text = Format(s, "0." & f) Text1.SetFocusEnd Sub,文本框Text1的GotFocus事件代碼:Private Sub Text1_GotFocus() Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text)End Sub,,【例5-4】
11、輸入兩個正整數(shù),求它們的最大公約數(shù)。,設計步驟如下。 窗體界面的設計如圖5-10所示,這里給出命令按鈕的Click事件代碼:Private Sub Command1_Click() m = Val(Text1.Text) n = Val(Text2.Text) If n * m = 0 Then MsgBox "兩數(shù)都不能為0!" Exit Sub End If If m
12、 < n Then t = m: m = n: n = t End If,Do r = m Mod n m = n n = r Loop While r 0 Text3.Text = mEnd Sub,,5.3 For...Next語句,其語法為For〈循環(huán)變量〉=〈初值〉To〈終值〉[Step〈步長〉] [〈語句列1〉] [Exit For] [〈語句列2〉]
13、 Next [〈循環(huán)變量〉],【例5-5】利用For循環(huán)結構顯示1000以內的所有能被37整除的自然數(shù)(如圖5-13所示)。設計步驟如下: (1) 窗體界面的設計與屬性設置。 (2) 編寫代碼。,編寫命令按鈕的Click事件代碼:Private Sub Command1_Click()a = "" For n = 1 To 1000 If n Mod 37 = 0 Then
14、 a = a & Str(n) & vbCrLf End If Next Text1.Text = aEnd Sub,,【例5-6】求從1000到1100之間的所有素數(shù)。窗體界面的設計參見圖5-15,這里給出命令按鈕的Click事件代碼:Private Sub Command1_Click() a = "" For n = 1001 To 1100 Step 2
15、 s = 0 For i = 2 To Int(Sqr(n)) If n Mod i = 0 Then s = 1 Exit For End If Next If s = 0 Then a = a & Str(n) & vbCrLf Next Text1.Text = aEnd Sub,,5.4 列表框與組合框【例5-7】將例
16、5-6中的文本框改為列表框(如圖5-16所示)。將窗體中的文本框換為列表框,無需修改列表框的屬性,只需修改命令按鈕的Click事件代碼: Private Sub Command1_Click() List1.Clear For n = 1001 To 1100 Step 2 s = 0 For i = 2 To Int(Sqr(n)) If n Mod i = 0 Then s =
17、 1 : Exit For End If Next If s = 0 Then List1.AddItem n ' 使用列表框的Add方法增加列表項 NextEnd Sub,,【例5-8】“同構數(shù)”是指這樣的整數(shù):它恰好出現(xiàn)在其平方數(shù)的右端,例如1和5就是這樣的數(shù)。試找出1~9999之間的全部“同構數(shù)”(如圖5-17所示)。 窗體界面的設計參見圖5-17,這里給出命令按鈕的Click事
18、件代碼:Private Sub Command1_Click() List1.Clear For n = 1 To 9999 Select Case n Case n ^ 2 Mod 10 List1.AddItem Format(n, "@@@@@") &Format(n ^ 2, "@@@@@@@@@@") Case n ^ 2
19、 Mod 100 List1.AddItem Format(n, "@@@@@") & Format(n ^ 2, "@@@@@@@@@@"),Case n ^ 2 Mod 1000 List1.AddItem Format(n, "@@@@@") & Format(n ^ 2, "@@@@@@@@@@")
20、 Case n ^ 2 Mod 10000 List1.AddItem Format(n, "@@@@@") & Format(n ^ 2, "@@@@@@@@@@") End Select NextEnd Sub,,【例5-9】小學生做加減法的算術練習程序。計算機連續(xù)地隨機給出兩位數(shù)的加減法算術題,要求學生回答,答對的打“√”,答錯的打“×
21、”。將做過的題目存放在列表框中備查,并隨時給出答題的正確率(如圖5-19所示)。 設計步驟如下: (1) 建立應用程序用戶界面。 (2) 設置對象屬性 (3) 編寫代碼。,,,出題部分由窗體的激活(Activate)事件代碼完成:Private Sub Form_Activate() Randomize (Time) a = Int(10 + 90 * Rnd) b = Int(10 + 90
22、 * Rnd) p = Int(2 * Rnd) Select Case p Case 0 Label1.Caption = a & " + " & b & " = " Text1.Tag = a + b' 將本題答案放入Text1.Tag中 Case 1 If a < b Then t = a
23、: a = b: b = t Label1.Caption = a & " – " & b & " = " Text1.Tag = a – b' 將本題答案放入Text1.Tag中,End Select Form1.Tag = Form1.Tag + 1 Text1.SelStart = 0 Text1.Text = &qu
24、ot;"End Sub “關閉”按鈕的Click事件代碼:Private Sub Command1_Click() Unload MeEnd Sub答題部分由文本框的按?。↘eyPress)事件代碼完成:,Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then fm = "!@@@@@@@@@@@@@@&qu
25、ot; If Val(Text1.Text) = Text1.Tag Then Item = Format(Label1.Caption & Text1.Text, fm) & " √" List1.Tag = List1.Tag + 1 Else Item = Format(Label1.Caption & Text1.Text, fm)
26、& " ×" End If List1.AddItem Item, 0 ' 將題目和回答插入到列表框中的第1項 Label2.Caption = "共" & Form1.Tag & "題," & Chr(13) & "正確率為:" Label
27、3.Caption = Format(List1.Tag / Form1.Tag, "#0.0#%") Form_Activate ' 調用出題代碼 End IfEnd Sub,【例5-10】利用循環(huán)結構和列表框控件,設計的“選項移動”窗體。設計步驟如下: (1) 建立應用程序用戶界面與設置對象屬性。 (2) 編寫事件代碼。
28、,,,編寫命令按鈕的Click事件代碼:Private Sub Command1_Click() i = 0 Do While i < List1.ListCount If List1.Selected(i) = True Then List2.AddItem List1.List(i) List1.RemoveItem i Else i = i + 1 End
29、 If LoopEnd Sub,Private Sub Command2_Click() For i = 0 To List1.ListCount - 1 List2.AddItem List1.List(i) Next List1.ClearEnd SubPrivate Sub Command3_Click() i = 0 Do While i < List2.ListCount I
30、f List2.Selected(i) = True Then List1.AddItem List2.List(i) List2.RemoveItem i Else i = i + 1 End If LoopEnd Sub,Private Sub Command4_Click() For i = 0 To List2.ListCount - 1 List1.AddI
31、tem List2.List(i) Next List2.ClearEnd Sub5.4.2 組合框【例5-11】將例5-9算術練習中的列表框改為組合框(下拉列表框),如圖5-22所示。設計步驟如下: (1) 建立應用程序用戶界面與設置對象屬性。 (2) 編寫程序代碼 修改文本框Text1的按?。↘eyPress)事件代碼:,Private Sub Text1_KeyPress(KeyAs
32、cii As Integer) If KeyAscii = 13 Then Fm = "!@@@@@@@@@@@@@@" If Text1.Text = Text1.Tag Then Item = Format(Label1.Caption & Text1.Text, Fm) & " √" Combo1.Tag = Combo1.Tag
33、+ 1 Else Item = Format(Label1.Caption & Text1.Text, Fm) & " ×" End If Combo1.AddItem Item, 0 Combo1.ListIndex = 0 Label3.Caption = "共" & Form1.Tag & &quo
34、t;題,正確率為:" Label2.Caption = Format(Combo1.Tag / Form1.Tag, "#0.0#%") Form_Activate End IfEnd Sub,編寫命令按鈕Command2的Click事件代碼:Private Sub Command2_Click() Form1.Tag = 0# Combo1.Tag = 0# Combo
35、1.Clear Label3.Caption = "歡迎重新開始!" Label2.Caption = "" Form_Activate Text1.SetFocusEnd Sub 其他代碼同例5-9。,2. 簡單組合框【例5-12】“簡易抽獎機”。在組合框中輸入號碼,按“開始”按鈕可以得到中獎的號碼(如圖5-23所示)。設計步驟如下: (1) 建立應用程序用
36、戶界面與設置對象屬性。 (2) 編寫事件代碼。,,,,編寫組合框Combo1的按健(KeyPress)事件代碼:,Private Sub Combo1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then ' 按回車鍵后,接收輸入的選項 Combo1.AddItem Combo1.Text, 0 Combo1.SelStart = 0
37、Combo1.SelLength = Len(Combo1.Text) End If If KeyAscii = 27 Then ' 按〈Esc〉鍵后,移去選項 If Combo1.ListIndex -1 Then Combo1.RemoveItem Combo1.ListIndex End If End IfEnd Sub,編寫命令按鈕Command1的Click事件代碼,
38、使之可以隨機地抽取獎號:Private Sub Command1_Click() Randomize n = Combo1.ListCount a = Int(Rnd * n) Combo1.ListIndex = a MsgBox "中獎的號碼是:" & Chr(13) & Combo1.Text, 0, "恭喜!"End Sub,3. 下拉組合框【例5
39、-13】在例5-12中使用下拉組合框,可以更加節(jié)省空間(如圖5-25所示)。 設計步驟如下: (1) 建立應用程序用戶界面與設置對象屬性。 (2) 編寫事件代碼。,,,Private Sub Combo1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then' 按回車鍵后,接收輸入的選項 Combo1.AddItem Combo1.Tex
40、t, 0 Combo1.SelStart = 0 Combo1.SelLength = Len(Combo1.Text) Text1.Text = Combo1.ListCount End If If KeyAscii = 27 Then' 按〈Esc〉鍵后,移去選項 If Combo1.ListIndex -1 Then Combo1.RemoveItem Com
41、bo1.ListIndex Text1.Text = Combo1.ListCount End If End IfEnd Sub,編寫命令按鈕Command1的Click事件代碼,使之可以隨機地抽取獎號:Private Sub Command1_Click() Randomize n = Combo1.ListCount a = Int(Rnd * n) Combo1.ListIndex =
42、a Label1.Caption = "中獎的號碼是:" & Combo1.TextEnd Sub,5.5 算法舉例【例5-14】“水仙花數(shù)”是指一個3位數(shù),其各位數(shù)的立方和等于該數(shù),如:153 = 13 + 53 + 33,窗體界面的設計參見前面例子,這里給出命令按鈕的Click事件代碼:Private Sub Command1_Click() Dim p As Integer List
43、1.Clear For n = 100 To 999 a = Int(n / 100) b = Int((n – a * 100) / 10) c = n - (a * 100 + b * 10) p = a ^ 3 + b ^ 3 + c ^ 3 If p = n Then List1.AddItem p NextEnd Sub,【例5-15】馬克思曾經(jīng)做過這樣一道趣味數(shù)學題:有30個
44、人在一家小飯館里用餐,其中有男人、女人和小孩。每個男人花了3先令,每個女人花了2先令,每個小孩花了1先令,一共花去50先令。問男人、女人以及小孩各有幾人?如圖5-28所示。,,窗體界面的設計參見前面例子,這里給出命令按鈕的Click事件代碼:Private Sub Command1_Click() List1.Clear For x = 1 To 16 For y = 1 To 24 z = 30 – x
45、– y If 3 * x + 2 * y + z = 50 Then p = Format(x, "@@@") & Format(y, "@@@@@") & Format(z, "@@@@@") List1.AddItem p End If Next NextEnd Sub,習題五 5
46、.1 輸出101~500之間的所有奇數(shù),奇數(shù)之和。 5.2 輸出100~200之間不能被3整除的數(shù)。 5.3 輸入初始值,輸出100個不能被3整除的數(shù)。 5.4 設計程序,求s = 1 + (1 + 2) + (1 + 2 + 3) + … + (1 + 2 + 3 + … + n)的值。 5.5 設s = 1×2×3×…×n,求s不大于400000時最大
47、的n。 5.6 設s = 11×22×33×…×nn,求s不大于400000時最大的n。 5.7 找出1~1000之間的全部“同構數(shù)”。 5.8 “完備數(shù)”是指一個數(shù)恰好等于它的因子之和,如6的因子為1、2、3,而6 = 1 + 2 + 3,因而6就是完數(shù)。編制程序,找出1~1000之間的全部“完備數(shù)”。5.9 編制程序,求出所有小于或等于100的自然數(shù)對。自然數(shù)
48、對是指兩個自然數(shù)的和與差都是平方數(shù),如8與17的和8 + 17 = 25與其差17 – 8 = 9都是平方數(shù),則8和17稱自然數(shù)對。,5.10 我國古代數(shù)學家張丘建在“算經(jīng)”里提出一個世界數(shù)學史上有名的百雞問題:雞翁一,值錢五,雞母一,值錢三,雞雛三,值錢一,百錢買百雞,問雞翁、母、雛各幾何?5.11 利用ex的下述近似公式計算e(直到最后一項小于10-6為止)。,,5.12 編程序在窗體上輸出的圖形如圖5-30所示。 5.1
49、3 編程序在窗體上輸出的圖形如圖5-31所示。,,,圖5-30 題5.12 圖5-31 題5.13,5.14 求下述數(shù)列的前n項之和:,,,,,… 5.15 驗證“哥德巴赫猜想”。1742年6月,德國數(shù)學家哥德巴赫(C.Goldbah 1690-1764)在給彼得堡的大數(shù)學家歐拉的信中提出一個問題:任何大于6的偶數(shù)均可以表示為兩個素數(shù)之和嗎?歐拉復信道:“任何大于6的偶數(shù)均可以表示
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- visual basic程序設計
- visual basic程序設計 (2)
- 《visual basic程序設計》大作業(yè)-
- 《visual basic程序設計》補修試題
- 河海大學函授本科《visual basic程序設計》自學安排
- visual basic語言程序設計課程教學改革探索
- visual basic程序設計試題 第 頁(共8頁)
- 實驗一visual basic環(huán)境和簡單程序設計
- 河海大學函授本科《visual basic程序設計》自學安排
- visual basic程序設計鄭州大學網(wǎng)上考試
- visual basic 60程序設計 - 沈陽理工大學
- 基于VISUAL BASIC 2005的土釘支護程序設計開發(fā).pdf
- visual basic程序設計#-湖北電大2019春visual basic 程序設計形成性考核試卷3-國開(湖北)00030-參考資料
- 2024年4月自考07759visual basic程序設計試題
- 國開visual basic程序設計#形考任務1-4答案
- Visual Basic程序設計題自動評分算法的研究及實踐.pdf
- visual_basic_程序設計教程_曹青邱李華等編著_機械工業(yè)出版社答案
- visual_c程序設計與應用教程課后答案
- 《visual c#程序設計教程與上機指導》第6章windows程序設計
- 廣東省高等教育自學考試visual basic程序設計課程
評論
0/150
提交評論