




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第四章第四章 基本的控制結(jié)構(gòu)基本的控制結(jié)構(gòu)(6+6學時)學時) 4.1 順序結(jié)構(gòu) 4.2 選擇結(jié)構(gòu) 4.3 循環(huán)結(jié)構(gòu) 4.4 其它輔助控制語句 4.5 常用算法(一) 4.6 常見錯誤 (順序、條件、循環(huán))4.1 4.1 順序結(jié)構(gòu)順序結(jié)構(gòu)一一. . 賦值語句賦值語句 形式: LET變量名表達式變量名表達式 作用: 先先求出表達式的值,后后將此值賦給指定的變量; 若該變量沒定義, 則還具有定義該變量(變體類型)的作用; 一般用于給變量賦值或?qū)丶O(shè)定屬性值。 例: sRate!=0.1+380 Text1.Text 歡迎使用Visual Basic 6.0” 說明:說明:當表達式的類型與變量的類
2、型不一致時,VB系統(tǒng)會自動地將表達式的值強制地轉(zhuǎn)換成變量的類型。 例: iA% = 10 / 3 iA中的結(jié)果為3 iA% = 11 / 3 iA中的結(jié)果為4(四舍五入) iA% = -11 / 3 iA中的結(jié)果為-4(四舍五入) iA%=38000 出錯,數(shù)據(jù)溢出。 說明:說明:當表達式是數(shù)字字符串,變量是數(shù)值類型時,系統(tǒng)自動地將數(shù)字字符串轉(zhuǎn)換成數(shù)值再賦值;當表達式中含有非數(shù)字字符時,則出錯。 例:iA% = “123” iA中的結(jié)果為123 iA% = “123abc” 錯誤,類型不匹配!說明:說明:邏輯型值賦值給數(shù)值型變量;系統(tǒng)自動轉(zhuǎn)換。 例:iA% = True iA中的結(jié)果為-1 i
3、A% = Flase iA中的結(jié)果為0說明:說明:非字符類型值賦值給字符型變量時,系統(tǒng)自動轉(zhuǎn)換。 例:cA$ = True cA中的結(jié)果為“True” cA$ = 123 cA中的結(jié)果為“123” cA$ = #2003/3/12# cA中的結(jié)果為“03-3-12” 注意:注意:雖然賦值號與關(guān)系運算符等于號都用“=”表示,VB系統(tǒng)會根據(jù)所處的位置自動判斷是何種意義的符號;賦值號的左邊只能是變量;VB不能在一句語句中給多個變量賦值。 Dim x%,y% : x = y = 100n = n+1iA% = Val(“123abc”)1.InputBox1.InputBox函數(shù)函數(shù) InputBox
4、(InputBox(提示提示,標題標題,缺省缺省,x,x坐標坐標,y y坐標坐標)其中: 標題 對話框標題, 提示 提示信息, 缺省輸入?yún)^(qū)缺省值,函數(shù)的返回字符類型值,即輸入的字符。例: 要在屏幕上顯示圖示的對話框:相應(yīng)的語句如下:Dim strName As String * 40 strName= InputBox( “請輸入你的姓名” + vbCrLf + “然后單擊確定” , “輸入框” ) 當鍵盤輸入“王曉明” 并按鍵或單擊“確定”按鈕后,變量strName獲得鍵盤輸入的值。 (注:用戶用鍵盤輸入字符前,輸入?yún)^(qū)內(nèi)沒有任何字符。)二二. . 與用戶交互函數(shù)和過程與用戶交互函數(shù)和過程x坐
5、標,y坐標:整型表達式定左上角在窗體中的位置可在VB的立即窗口中執(zhí)行該語句。上例也可以使用如下語句:Dim strName As String * 40, strS1 As String * 40strS1 = “請輸入你的姓名” + Chr(13) + Chr(10) + “然后單擊確定” strName= InputBox(strS1, “輸入框”,“王曉明” , 100,100) 用戶在用鍵盤輸入字符之前,輸入?yún)^(qū)內(nèi)已有“王曉明”三個字。如果用戶想輸入的字符就是“王曉明”這三個字,則只需按鍵或單擊“確定”按鈕即可(采用缺省值);如果用戶想輸入的字符不是“王曉明”這三個字,可用鍵盤重新輸入其
6、它字符,或在已有字符的基礎(chǔ)上修改后,再按鍵或單擊“確定”按鈕。常量 vbCrLf 1.InputBox1.InputBox函數(shù)函數(shù)函數(shù)形式:變量% = MsgBox(提示,按鈕,標題)過程形式: MsgBox 提示,按鈕,標題 按鈕值如下:2. MsgBoxMsgBox函數(shù)和函數(shù)和MsgBoxMsgBox過程過程分組內(nèi)部常數(shù)值描述默認按鈕VbDefaultButton1VbDefaultButton2VbDefaultButton30256512第1個第2個第3個模式VbApplicationModaleVbSystemModale04096應(yīng)用程系統(tǒng)注:以上按鈕的四組方式可以組合使用,4個值
7、相加即可。例如上圖按鈕值為:5+48+0+0=43MsgBoxMsgBox函數(shù)的返回值為整型數(shù)值:07。對應(yīng)用戶在消息框中所選定的按鈕如下表所示:MsgBoxMsgBox函數(shù)的返回值以應(yīng)用程序模式應(yīng)用程序模式建立的對話框,用戶必須響應(yīng)后才能繼續(xù)當前的應(yīng)用程序;以系統(tǒng)模式系統(tǒng)模式建立的對話框,在對話框出現(xiàn)時,系統(tǒng)將所有的應(yīng)用程序掛起來,強迫用戶必須響應(yīng)該對話框。要求: 帳號不超過6位數(shù)字,有錯,清除原內(nèi)容再輸入. 密碼輸入時在屏幕上以 “*”代替; 若密碼錯,顯示有關(guān)信息,選擇“重試”按鈕,清除原內(nèi)容再輸入,選擇“取消”按鈕,停止運行。分析: 帳號6位,MaxLength為6 , LostFoc
8、us判斷數(shù)字IsNumeric函數(shù) 密碼PassWordChar為“*”,MsgBox函數(shù)設(shè)置密碼錯對話框.例例4.1 編一帳號和密碼檢驗程序;(分號):將光標定位在上一個顯示的字符的后邊。,(逗號):將光標定位在下一個打印區(qū)的開始位置處。打印區(qū):打印區(qū):從每一行的第一個字符的位置開始, 每14個字符的寬度的位置為一個打印區(qū)。無;,時表示換行,從下一行的第一個字符的位置輸出。 開始打印的位置是由對象的CurrentX和CurrentY屬性決定, 缺省為打印對象的左上角0,0。 注意注意:Print方法一般在Form _Load事件過程中是無效的,要想在Form _Load事件過程中使用Prin
9、t方法,必須設(shè)置窗體的AutoRedraw為True。三三 PrintPrint方方法法Private Sub Form_Click() For i = 1 To 5 Print Tab(i); String(6 - i, ); Spc(6); String(i, ) Next i End Sub注意注意:String(number, character)返回指定長度重復(fù)字符的字符串??紤]:若把Spc(6)換成Tab(6),效果如何?例例2.9 用用Print方法顯示圖形方法顯示圖形表達式 語句塊TF圖 1-3-7 單分支結(jié)構(gòu) 1. 1. IfIfThenThen語句語句( (單分支結(jié)構(gòu)單分支
10、結(jié)構(gòu)) ) If Then 語句塊語句塊 End If If Then 4.2 4.2 選擇結(jié)構(gòu)選擇結(jié)構(gòu)說明:表達式表達式一般為關(guān)系表達式關(guān)系表達式或邏輯表達式邏輯表達式, 也可以是算術(shù)表算術(shù)表達式達式。若為算術(shù)表達式,則表達式的值非零非零時為TRUE,零零為FALSE。 語句塊語句塊可以是一個語句,也可以是多個語句。若在程序中采用行行IF語句語句,則多個語句之間一定要用冒號分隔多個語句之間一定要用冒號分隔。 結(jié)構(gòu)化的IF語句 行IF語句tyx圖 1-3-8 兩個數(shù)交換過程 例 已知兩個數(shù)x和y,比較它們的大小, 并把大者賦值給x,小者賦值給y. If xy Then t=x x=y y=t
11、End If 或或 If xy Then t=x: x=y: y=t重要的是學會兩個數(shù)的交換,若上述語句次序變一下,結(jié)果如何?重要的是學會兩個數(shù)的交換,若上述語句次序變一下,結(jié)果如何?一瓶醬油、一瓶醋例 從鍵盤輸入兩個整數(shù)x和y,輸出兩者中的大者。 Private Sub Form_Click() Dim x%, y%, max%, mmm$ x = Val(InputBox(請輸入一個整數(shù)給請輸入一個整數(shù)給x) y = Val(InputBox(請輸入一個整數(shù)給請輸入一個整數(shù)給y) max = x If max y Then max = y mmm = (x & , & y
12、& 兩者中的大數(shù)是:兩者中的大數(shù)是: & max) MsgBox (mmm) End Sub表 達 式F圖1-3-9 雙 分 支 結(jié) 構(gòu) 語 句 塊1T 語 句 塊2yxxxxxxxsincos231030單分支結(jié)構(gòu)實現(xiàn): y=cos(x)x3+3*x If x0 Then y=sin(x)+sqr (x*x+1) 雙分支結(jié)構(gòu)實現(xiàn): If x0 Then y=sin(x)+sqr (x*x+1) Else y=cos(x)x3+3*x End If2. 2. IfIfThenThenElseElse語句語句( )( ) If Then Else End If 或If Then
13、Else 例: 計算分段函數(shù)結(jié)構(gòu)化的IF語句行IF語句雙分支結(jié)構(gòu)雙分支結(jié)構(gòu)表達式1表達式2表 達 式nTFTF圖 1-3-10 多分支結(jié)構(gòu) 語句塊n語 句 塊n+1 語句塊 2 語句塊 1FT3. 3. IfIfThenThenElseIfElseIf語句語句( )( ) 形式: If Then ElseIf Then Else 語句塊語句塊 n+1 End If多分支結(jié)構(gòu)多分支結(jié)構(gòu)注意: ElseIf不能寫成Else If;不管有幾個分支,最終程序最多只執(zhí)行其中的一個分支最多只執(zhí)行其中的一個分支;若有多個表達式同時滿足,則只執(zhí)行排在最前面的那個分支。 :已知變量strC中存放了一個字符,判斷
14、該字符是字母字符、數(shù)字字符還是其他字符。用多分支結(jié)構(gòu)實現(xiàn)用多分支結(jié)構(gòu)實現(xiàn): If Ucase(strC) =A And Ucase (strC) =0 And strC = 90 Then Print 優(yōu) ElseIf mark = 80 Then Print 良 ElseIf mark = 70 Then Print 中 ElseIf mark = 60 Then Print 及格 Else Print 不及格 End If 方法二 If mark 60 Then Print 不及格 ElseIf mark 70 Then Print 及格 ElseIf mark 80 Then Print
15、 中 ElseIf mark = 60 Then Print 及格 ElseIf mark = 70 Then Print 中 ElseIf mark = 80 Then Print 良 ElseIf mark = 90 Then Print 優(yōu) Else Print 不及格 End If 例例4.3已知百分制成績mark,顯示對應(yīng)的五級制成績數(shù)據(jù)合法性檢查中引起程序的死循環(huán)Private Sub Text1_LostFocus() If Not IsNumeric(Text1) Then Text1 = Text1.SetFocus End IfEnd SubPrivate Sub Text
16、2_LostFocus() If Not IsNumeric(Text2) Then Text2 = Text1.SetFocus End IfEnd SubIf Text2 And Not IsNumeric(Text2)IsNumeric(Text2)是一個函數(shù)Text2Text1確定常見錯誤常見錯誤(一一)If語句的嵌套是指If或Else后面的語句塊中又包含If語句。 形式如下: If Then If Then End If End If T x yT z 為最小數(shù)T 使得 x yFFF x yzx y x 與 y 交換y z y 與 z 交換xyz用一個IF語句和一個嵌套的IF語句實現(xiàn)
17、 If xy Then t=x: x=y: y=t If yz Then t=y: y=z: z=t If xy Then t=x: x=y: y=t End If End IfIf語句的嵌套注意事項:書寫鋸齒型; If 與End If配對。4 4If If 語句的嵌套語句的嵌套補充例題:閏年問題補充例題:閏年問題判斷某年是否為閏年的兩個條件: 1該年年號能被4整除,但不能被100整除; 2該年年號能被4整除,同時又能被400整除。所有年號能被4整除能被100整除能被400整除Private Sub Form_Click() Dim y%, flag As Boolean y = Val(In
18、putBox(請輸入年號請輸入年號) If y Mod 4 = 0 Then If y Mod 100 = 0 Then If y Mod 400 = 0 Then flag = True Else flag = flase End If Else flag = True End If Else flag = flase End If If flag Then Print y; 年是閏年!年是閏年! Else Print y; 年不是閏年!年不是閏年! End IfEnd SubPrivate Sub Form_Click() Dim y%, flag As Boolean y = Val(I
19、nputBox(請輸入年號) flag = (y Mod 4 = 0) And (y Mod 100 0) flag = flag Or (y Mod 400 = 0) If flag Then Print y; 年是閏年! Else Print y; 年不是閏年! End IfEnd Sub:是與類型相同類型相同的下面四種形式之一: 表達式 例: “A“或或x+5 一組枚舉表達式(用逗號分隔) 2,4,6,8 表達式1 To 表達式2 60 To 100 Is 關(guān)系運算符 表達式 Is =A And Ucase (strC) =0 And strC 0 And y 0 Then Print
20、在第一象限ElseIf x 0 Then Print 在第二象限ElseIf x 0 And y 0 And y 0 And y 0Print 在第一象限 Case x 0Print 在第二象限 Case x 0 And y 0 And y y,x,y) (2)Choose函數(shù)形式是: Choose(數(shù)字類型變量,值為(數(shù)字類型變量,值為1的返回值,值為的返回值,值為2的返回值的返回值) 例如,Nop是1-4的值,轉(zhuǎn)換成 + 、-、運算符的語句如下: Op= Choose(Nop,+,-,) 當值為1,返回字符串“+”,然后放入Op變量中,值為2,返回字符 串“-”,依次類推;當Nop是1-4
21、的非整數(shù),系統(tǒng)自動取Nop的整數(shù)辦法在判斷;若Nop不在1-4之間,函數(shù)返回Null值。 (3) Switch函數(shù)形式是: Switch(條件表達式(條件表達式1,條件表達式,條件表達式1為為True時的值時的值,條件表達式,條件表達式2,條件表達式,條件表達式2為為True時的值時的值)6.6.條件函數(shù)條件函數(shù)自左至右,只能返回一個值。1在選擇結(jié)構(gòu)中缺少配對的結(jié)束語句對多行式的If塊語句中,應(yīng)有配對的 End If語句結(jié)束。2. 多邊選擇ElseIf關(guān)鍵字的書寫和條件表達式的表示 ElseIf 不要寫成Else If; 多個條件表達式次序問題,見例4.33. Select Case語句的使用
22、 Select Case 后不能出現(xiàn)多個變量;Case子句后不能出現(xiàn)變量見例4.6常見錯誤常見錯誤( (二二) )1. For循環(huán)語句循環(huán)語句 (一般用于循環(huán)次數(shù)已知)形式 For 循環(huán)變量初值循環(huán)變量初值 to 終值終值 Step 步長步長 語句塊語句塊Exit For 語句塊語句塊 Next 循環(huán)變量循環(huán)變量 循環(huán)變量 0 情況 語句塊 Exit For 語句塊 循環(huán)變量加步長 T F 循環(huán)變量得初值 循環(huán)體4.3 4.3 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)(For循環(huán)循環(huán)) 0 初值終值(步長=1 時,可省略)終值=0 死循環(huán)循環(huán)次數(shù)循環(huán)次數(shù)步長步長) 1(步長初值終值Int循環(huán)變量循環(huán)變量:必須是數(shù)值類
23、型的變量,并且不能是數(shù)組元素。Exit For:退出循環(huán)。和If語句結(jié)合使用。要注意:要注意:v 退出循環(huán)后,循環(huán)控制變量值的問題。 例程序段: For i=2 To 13 Step 3 循環(huán)執(zhí)行次數(shù) Print i , 輸出 i的值分別為: Next i 2 5 8 11 Print : Print “I=“, i 出了循環(huán)輸出為: I=14v 在循環(huán)體內(nèi)對循環(huán)控制變量可多次引用;但最好不要對其賦值,否則影響原來的循環(huán)控制規(guī)律。4) 1(3213Int ,程序段如下: Dim i %, s% 等價于: Dim i %, s% s=0 s=0 : i = 1 For i = 1 To 100
24、step 2 re: s = s + i s = s + i i = i +2 Next i If i = 100 Then GoTo re End If 例4.8 計算1100的奇數(shù)和Private Sub Command1_Click() j = 0 For i = 1 To 20 Step 2 i = i + 3 j = j + 1 Print 第; j; 次循環(huán)i=; i Next i Print 退出循環(huán)后i=; i End Sub正常情況:i=1,3,5,7,9,11,13,15,17,19現(xiàn)在:i=4,9,14,19例4.10 輸出可打印的ASCII碼字符與它的編碼值。 例4.9
25、 改變循環(huán)控制變量對循環(huán)的影響。補充例題補充例題:通過改變循環(huán)控制變量,控制循環(huán)提前結(jié)束。題目:打印出最小的水仙花數(shù)(一個三位數(shù),其值等于它的三個數(shù)位的值的立方之和,例如:371=33+73 +13)。Private Sub Form_Click() Dim m%, a%, b%, c% For m = 100 To 999 a = m 100 c = m Mod 10 b = (m - a * 100) 10 If m = a3+b3+c3 Then Print m; End If Next m PrintEnd SubPrivate Sub Form_Click() Dim m%, a%,
26、 b%, c% For m = 100 To 999 a = m 100 c = m Mod 10 b = (m - a * 100) 10 If m = a3+b3+c3 Then Print m; m=1000 Exit For End If Next m PrintEnd Sub形式1: Do While|Until 語句塊語句塊 Exit Do 語句塊語句塊 Loop形式2: Do 語句塊語句塊 Exit Do 語句塊語句塊 Loop While|Until 表 達 式 列 表 1 F T F T Exit Do 語 句 塊 語 句 塊 Exit Do 語 句 塊 語 句 塊 表 達
27、式 列 表 1 圖 1-3-16 Do Loop While 圖 1-3-15 Do While Loop 2. DoLoop循環(huán)語句循環(huán)語句(用于控制循環(huán)次數(shù)未知)先執(zhí)行,后判斷條件;至少執(zhí)行一次。條件也可以是數(shù)值、字符串或邏輯表達式。我國有13億人口,按人口年增長0.8%計算,多少年后我國人口超過26億。分析:解此問題兩種方法,可根據(jù)公式:26=13*(1+0.008)n 直接利用標準對數(shù)函數(shù)求得;也可利用循環(huán)求得,程序如下: 例例4.11人口增長問題人口增長問題Private Sub Command1_Click()x = 13 n = 0 Do While x = 26 x = x *
28、 1.008 n = n + 1 Loop Print n, xEnd SubPrivate Sub Command1_Click()x = 13 n = 0 Do x = x * 1.008 n = n + 1 Loop Until x = 26 Print n, xEnd SubPrivate Sub Command1_Click()x = 13 n = 0 Do x = x * 1.008 n = n + 1 Loop While x =26 Then Exit Do Loop Print n, xEnd Sub用輾轉(zhuǎn)相除法求兩自然數(shù)m,n的最大公約數(shù)和最小公倍數(shù)。分析:求最大公約數(shù)的算
29、法思想: (1)對于已知兩數(shù)m,n,使得mn; (2) m除以n得余數(shù)r; (3)若r=0,則n為最大公約數(shù)結(jié)束;否則執(zhí)行(4); (4)m n,n r,再重復(fù)執(zhí)行(2)。 例:求 m=14 ,n=6 的最大公約數(shù). If m n Then t = m: m = n: n = t r =m mod n Do While (r 0) m=n n=r r= m mod n Loop Print 最大公約數(shù)最大公約數(shù)=, n m n r 14 6 2 6 2 0輾轉(zhuǎn)相減法當 mn時:m=m-n當 nm時:n=n-m 重復(fù)操作直到m=n時為止 m=n即為最大公約數(shù)Do While m n m n If
30、 m n Then 14 6 m = m n 8 6 Else 2 6 n = n m 2 4 End If 2 2Loop例例4.12最大公約數(shù)最大公約數(shù) 一個循環(huán)體內(nèi)又包含了一個完整的循環(huán)結(jié)構(gòu)稱為循環(huán)的嵌套. 例例4.13打印九九乘法表. For i = 1 To 9 For j = 1 To 9 se = i & & j & = & i * j Picture1.Print Tab(j - 1) * 9 + 1); se; Next j Picture1.Print Next i思考:思考:打印上三角或下三角程序如何改動?要打印下三角打印上三角或下三角程序
31、如何改動?要打印下三角?For j = 1 To i3.循環(huán)的嵌套循環(huán)的嵌套 For ii =1 To 10 For jj=1 To 20 Next ii Next jj For ii =1 To 10 For ii=1 To 20 Next ii Next ii For ii =1 To 10 For jj=1 To 20 Next jj Next ii For ii =1 To 10 Next ii For ii =1 To 10 Next ii 內(nèi)循環(huán)變量與外循環(huán)變量不能同名;外循環(huán)必須完全包含內(nèi)循環(huán),不能交叉;不能從循環(huán)體外轉(zhuǎn)向循環(huán)體內(nèi),反之則可以。正確錯誤循環(huán)嵌套的注意事項:循環(huán)嵌套
32、的注意事項:1. Go To 語句語句 形式形式: Go To 標號標號|行號行號 作用:無條件地轉(zhuǎn)移到標號或行號指定的那行語句. 標號是一個字符序列,行號是一個數(shù)字序列. 2.Exit語句語句 多種形式: Exit For、Exit Do、Exit Sub、Exit Function等。 作用:退出某種控制結(jié)構(gòu)的執(zhí)行。 3. End語句語句 多種形式: End、 End If、 End Select、 End With、 End Type、 End Sub、 End Function、 作用:End結(jié)束一個程序的運行;其余表示某個結(jié)構(gòu)的結(jié)束,與對應(yīng)的結(jié)構(gòu)語句配對出現(xiàn)。4.4 4.4 其他輔助
33、控制語句其他輔助控制語句不符合結(jié)構(gòu)化程序設(shè)計的思想。形式如下: With 對象 語句塊 End With 作用:對某個對象執(zhí)行一系列的操作,而不用重復(fù)指出對象的名稱。 With Label1 .Height = 2000 .Width = 2000 .FontSize=22 .Caption = MyLabel End With Label1.Height = 2000 Label1.Width = 2000 Label1.FontSize=22 Label1.Caption = MyLabel 等價前面的點不能省略。4.With 語句語句4.5 4.5 常用算法(一)常用算法(一)算法是對某
34、個問題求解過程的描述 1.1.累加、連乘累加、連乘 1100的5或7的倍數(shù)的和 Sum = 0 For i = 1 To 100 If i Mod 5 = 0 Or i Mod 7 = 0 Then Sum = Sum + i End If Next i Print Sum 310的乘積 t = 1 For i =3 To 10 t = t * i Next i Print t思考:若把循環(huán)體前面置各變量初值的語句放在循環(huán)體內(nèi),程序運行時會產(chǎn)生什么情況?素數(shù)是一個大于2,且不能被1和本身以外的整數(shù)整除的整數(shù)。 判別某數(shù)m是否為素數(shù)最簡單的方法是:對于m 從 i=2,3,m-1判別m能否被i整除
35、,只要有一個能整除,m不是素數(shù),否則m是素數(shù)。例例4.15 求100以內(nèi)素數(shù)的代碼: For m = 2 To 100 For i = 2 To m - 1 If (m Mod i) = 0 Then GoTo NotNextM Next i Print mNotNextM: Next mm是否為素數(shù)求100以內(nèi)的素數(shù)思考:思考: 此例用Go To語句對非素數(shù)不作判斷,若不用GoTo語句,如何修改程序? (i = 200 If i0 and y = (100 5.0 * x) / 3 Then z = 100 - x - y Print 母雞; x; 只;公雞; y; 只;小雞; z; 只!
36、End If Next xEnd Sub方法三方法三補充例題:愛因斯坦的階梯問題設(shè)有一階梯,每步跨每步跨2階,最后余階,最后余1階階;每步跨3階,最后余2階;每步跨5階,最后余4階;每步跨6階,最后余5階;每步跨每步跨7階時,最后正好到達階梯頂階時,最后正好到達階梯頂。問共有多少階梯?Private Sub Form_Click() Dim i% i = 7 Do While (i Mod 3 2) Or (i Mod 5 4) Or (i Mod 6 5) i = i + 14 Loop Print 共有; i; 個階梯End Sub奇數(shù)7的倍數(shù) “遞推法”又稱為“迭代法”,其基本思想是把一
37、個復(fù)雜的計算過程轉(zhuǎn)化為簡單過程的多次重復(fù)。每次重復(fù)都從舊值的基礎(chǔ)上遞推出新值,并由新值代替舊值。 例例4.17 猴子吃桃子。小猴在某天摘桃若干個,當天吃掉一半,覺得還不過癮,又多吃了一個;第二天吃了剩下的桃子的一半多一個;以后每天都這樣吃下去,直到第7天要吃時只剩下一個,問小猴子第一天共摘下了多少個桃子? 分析:這是一個“遞推”問題,先從最后一天推出倒數(shù)第二天的桃子,再從倒數(shù)第二天的桃子推出倒數(shù)第三天的桃子。設(shè)第n天的桃子為xn,那么它是前一天的桃子數(shù)的xn-1 的一半減1,即 xn =x xn-1n-1 /2 - 1 xn-1 =( x xn n +1)24.4.遞推法遞推法Private
38、Sub Form_Click() Dim n%, i% x = 1 第7天的桃子 Print 第 7 天的桃子數(shù)為: 1只 For i = 6 To 1 Step -1 x = (x + 1) * 2 Print 第; i; 天的桃子數(shù)為:; x; 只 Next iEnd Sub補充例題:Fibonacci數(shù)列著名意大利數(shù)學家Fibonacci 曾提出這樣一個有趣的問題:設(shè)有一對新生的兔子,從第三個月開始它們每個月都生一對兔子。按此規(guī)律,并假設(shè)沒有兔子死亡,一年后共有多少對兔子?一月:1對小兔子二月:1對大兔子三月:1大兔子+ 1對小兔子四月:2大兔子+ 1對小兔子五月:3大兔子+ 2對小兔子
39、六月:5大兔子+ 3對小兔子七月:8大兔子+ 5對小兔子 Private Sub Form_Click() Dim i%, f1%, f2%, f3% f1 = 1: f2 = 1 Print f1; f2; For i = 3 To 12 f3 = f1 + f2 Print f3; f1 = f2 f2 = f3 Next iEnd Sub補充例題:求N的階乘求N的階乘是一個標準的遞推公式: N!=N*(N-1)! (注:已知:1!=1)Private Sub Form_Click() Dim i%, f! f = 1 For i = 1 To 10 f = f * i Print (i
40、& !=); f Next iEnd Sub 效果默認控件名Name 標題 Caption 有關(guān)屬性設(shè)置 Form1 顏色、對齊、鼠標屬性例 MousePointer=99,MouseIcon=Key04.ico Label1 左對齊 Alignment=0, BorderStyle =1 Label2 居中 Alignment=1,BorderStyle =1 Label3 自動 AutoSize=True, WordWarp=False, BorderStyle =1 Label4 背景白 BackColor= &H00FFFFFF&, BorderStyle =0
41、 Label5 前景紅 ForeColor= &H000000FF&, BorderStyle =0 例2.3 控件設(shè)置補充例題:國際象棋棋盤與古印度國的糧食相傳古代印度國王舍罕要褒賞他的宰相達依爾(國際象棋的發(fā)明者),問他需要什么,達依爾回答說:“國王只要在國際象棋棋盤的第一格里放上1粒麥子,在第二格里放上2粒麥子,在第三格里放上4粒麥子,以后按此比例每一以后按此比例每一格加一倍格加一倍,一直放到第64格,我就感恩不盡,其它我什么也不想要了?!苯Y(jié)果全印度國的糧食都不夠!(注:1M3麥子1.42108顆)Private Sub Form_Click() Dim i%, s!, t! t = 1: s = 0 For i = 1 To 64 s = s + t t = t * 2 Next i s = s / 142000000# Print 需要麥子; s; 立方米End Sub該例題涉及兩個問題: (1)用循環(huán)結(jié)構(gòu)求級數(shù)和的問題。本例根據(jù)某項值的精度 來控制循環(huán)是否結(jié)束。 (2)累加:e = e + t 循環(huán)體外對累加和的變量清零 e=0 連乘:n = n * i 循環(huán)體外對連乘積變量置1 n=1 PrivatePrivate Sub Form_Click
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45408-2025信息技術(shù)生態(tài)環(huán)境大數(shù)據(jù)數(shù)據(jù)分類與代碼
- 山西省渾源縣第七中學2024-2025學年高三第一次調(diào)查研究考試(4月)化學試題含解析
- 浙江商業(yè)職業(yè)技術(shù)學院《體育產(chǎn)業(yè)經(jīng)營管理》2023-2024學年第二學期期末試卷
- 懷化學院《中國古代物質(zhì)文化與審美風尚》2023-2024學年第二學期期末試卷
- 重慶市忠縣達標名校2025屆初三2月七校聯(lián)考數(shù)學試題含解析
- 山東菏澤市曹縣重點中學2024-2025學年初三下學期第六次周練化學試題文試題含解析
- 山東省濟南市章丘區(qū)重點中學2024-2025學年初三第一次強化訓(xùn)練英語試題含答案
- 遼寧對外經(jīng)貿(mào)學院《外景采集與創(chuàng)作》2023-2024學年第二學期期末試卷
- 長春大學旅游學院《醫(yī)學影像診斷學上》2023-2024學年第一學期期末試卷
- 天津市和平區(qū)2025年高三第二次(4月)適應(yīng)性測試生物試題試卷含解析
- DB3305-T 57-2018幸福鄰里中心建設(shè)與服務(wù)管理規(guī)范
- AIGC基礎(chǔ)與應(yīng)用全套教學課件
- 9.1.3二項分布(解析版)
- 神經(jīng)生長因子在神經(jīng)退行性疾病中的作用
- 國有企業(yè)采購管理規(guī)范 T/CFLP 0027-2020
- 《災(zāi)害風險管理》 課件 第6、7章 災(zāi)害風險分析與評估、災(zāi)害發(fā)生前的風險管理
- 2024年內(nèi)蒙古中考地理生物試卷
- 緩和醫(yī)療-以死觀生的生活智慧智慧樹知到期末考試答案章節(jié)答案2024年嘉興大學
- 小學畢業(yè)考試數(shù)學試卷附答案【b卷】
- 2024年江蘇省泰州市興化市中考二模數(shù)學試題
- 文獻檢索智慧樹知到期末考試答案章節(jié)答案2024年寧夏醫(yī)科大學
評論
0/150
提交評論