【正文】
程序如下: Private Sub Command1_Click() Dim a%, b%, r!, ia%, ib% r = 321 ? 最小值初值取鋼材料的長度 For b = 1 To 321 \ 27 ? b最多的段數(shù) For a = 1 To 321 \ 17 b ? a最多的段數(shù) t = 321 b * 27 a * 17 ? 當前的殘料 If t 0 And t r Then r = t ? 求最短的殘料 ia = a ? 最短殘料時 a的段數(shù) ib = b ? 最短殘料時 b的段數(shù) End If Next a Next b Print ia, ib, r End Sub 常 見 錯 誤 1. 不循環(huán)或死循。 Max End Sub 例 實際應用 , 求最短殘料 。 Private Sub Command1_Click() Max = 100 For i = 1 To 10 x = Int(Rnd * 101 + 100) Print x。 設第 n天的桃子為 xn, 那么它是前一天的桃子數(shù) 的 xn1 的一半減 1, 即 xn =( xn1 +1) 2 、最大值 在若干個數(shù)中求最大值 , 一般先假設一個較小的數(shù)為最大值的初值 ,若無法估計較小的值 , 則取第一個數(shù)為最大值的初值;然后將每一個數(shù)與最大值比較 , 若該數(shù)大于最大值 , 將該數(shù)替換為最大值;依次逐一比較 。 例 猴子吃桃子 。 “遞推法”又稱為“迭代法”,其基本思想是把一個復雜的計算過程轉化為簡單過程的多次重復。 方法一:最簡單三個未知數(shù)利用三重循環(huán)來實現(xiàn)。 設母雞 、 公雞 、 小雞各為 x、 y、 z只 , 根據(jù)題目要求 , 列出方程為: x+y+y=100 3x+2y+=100 三個未知數(shù),兩個方程,此題有若干個解。 假定小雞每只 5角 , 公雞每只 2元 , 母雞每只 3元 。 例 求 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 m NotNextM: Next m m是否為素數(shù) 求 100以內(nèi)的素數(shù) 思考: 此例用 Go To語句對非素數(shù)不作判斷,若不用 GoTo語句,如何修改程序? “窮舉法”也稱為“枚舉法”或“試湊法”,即將可能出現(xiàn)的各種情況一一測試,判斷是否滿足條件,一般采用循環(huán)來實現(xiàn)。 e End Sub ??????????????? m1i0i i!11i!1 ... !1...3!1!211!11ei2. 求素數(shù) 素數(shù)是一個大于 2,且 不能被 1和本身以外的整數(shù)整除的整數(shù)。 i。 ( 2)累加: e=e+t 循環(huán)體外對累加和的變量清零 e=0 連乘: n=n*i 循環(huán)體外對連乘積變量置 1 n=1 Private Sub Form_Click() Dim i%,namp。 With Label1 .Height = 2022 .Width = 2022 .FontSize=22 .Caption = MyLabel End With = 2022 = 2022 =22 = MyLabel 等價 常用算法(一) 算法是對某個問題求解過程的描述 1. 累加、連乘 1~ 100的 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 3~ 10的乘積 t = 1 For i =3 To 10 t = t * i Next i Print t 思考: 若把循環(huán)體前面置各變量初值的語句放在循環(huán)體內(nèi),程序運行時會產(chǎn)生什么情況? 例 求自然對數(shù) e的近似值 ,要求其誤差小于 ,近似公式為: 該例題涉及兩個問題: ( 1)用循環(huán)結構求級數(shù)和的問題。 3. End語句 多種形式: End、 End If、 End Select、 End With、 End Type、 End Sub、 End Function、 作用: End結束一個程序的運行;其余表示某個結構的結束,與對應的結構語句配對出現(xiàn)。 正確 錯誤 其他輔助控制語句 1. Go To 語句 形式 : Go To {標號 |行號 } 作用:無條件地轉移到標號或行號指定的那行語句 . 標號是一個字符序列 ,行號是一個數(shù)字序列 . 多種形式: Exit For、 Exit Do、 Exit Sub、 Exit Function等 。 se。 = amp。 amp。 分析:求最大公約數(shù)的算法思想: (1)對于已知兩數(shù) m, n, 使得 mn; (2) m除以 n得余數(shù) r; (3)若 r=0,則 n為最大公約數(shù)結束;否則執(zhí)行 (4); (4)m?n, n?r,再重復執(zhí)行 (2)。 2. Do…Loop 循環(huán)語句 (用于控制循環(huán)次數(shù)未知 ) 形式 1: Do { While|Until }條件 語句塊 [Exit Do 語句塊 ] Loop 形式 2: Do 語句塊 [Exit Do 語句塊 ] Loop { While|Until} 條件 表達式列表 1 F T F T E xi t D o 語句塊 語句塊 E xi t D o 語句塊 語句塊 表達式列表 1 圖 1 3 16 D o ? L o o p W hi l e 圖 1 3 15 D o W hi l e ? L o o p 例 我國有 13億人口,按人口年增長 %計算,多少年后我國人口超過 26億。 i Next i Print 退出循環(huán)后 i=。 j。 4)1( 3 213 ??? ?I n t步長 例 改變 循環(huán)控制變量對循環(huán)的影響。 循 環(huán) 結 構 1. For循環(huán)語句 (一般用于循環(huán)次數(shù)已知 ) 形式 For 循環(huán)變量=初值 to 終值 [Step 步長 ] 語句塊 [Exit For] 語句塊 Next 循環(huán)變量 循環(huán)變量 = 終值 語句塊 Exit For 語句塊 循環(huán)變量加步長 T F 循環(huán)變量得初值 循環(huán)體 例 計算 1~100的奇數(shù)和,程序段如下: Dim i %, s% 等價于 : Dim i %, s% s=0 s=0 : i = 1 For i = 1 To 100 step 2 re: If i = 100 Then s = s + i s = s + i Next i i = i +2 GoTo re End If 0 初值 終值 =1 時 ,可省略 0 初值 終值 =0 死循環(huán) 循環(huán)次數(shù) )1( ?? ?步長 初值終值I n t要注意: ? 出了循環(huán),循環(huán)控制變量值的問題。 2. 多邊選擇 ElseIf關鍵字的書寫和條件表達式的表示 ElseIf 不要寫成 Else If; 多個條件表達式次序問題 ,見例 。 ) 當值為 1,返回字符串“ +” ,然后放入 Op變量中, 值為 2,返回字符串“ ” ,依次類推; 當 Nop是 14的非整數(shù),系統(tǒng)自動取 Nop的整數(shù)辦法在判斷;若 Nop不在 1~4之間,函數(shù)返回 Null值。 分析 :產(chǎn)生 1~ 10操作數(shù),可通過 Int(10 * Rnd + 1) 實現(xiàn) 設置的控件名 Label1 Text1 Picture1 Command1 ( 1) IIf函數(shù)形式是: IIf(表達式,當表達式為 True時的值,當表達式為 False時的值) 例如,求 x,y中大的數(shù),放入 Tmax變量中,語句如下: Tmax=IIf( x y, x, y) ( 2) Choose函數(shù)形式是: Choose(數(shù)字類型變量,值為 1的返回值,值為 2的返回值 …… ) 例如, Nop是 14的值,轉換成 + 、 、 、 247。 哪個能實現(xiàn),哪個不能實現(xiàn)? 方法一 If x 0 And y 0 Then Print 在第一象限 ElseIf x 0 And y 0 Then Print 在第二象限 ElseIf x 0 And y 0 Then Print 在第三象限 ElseIf x 0 And y 0 Then Print 在第四象限 End If 方法二 Select Case x,y Case x 0 And y 0 Print 在第一象限 Case x 0 And y 0 Print 在第二象限 Case x 0 And y 0 Print 在第三象限 Case x 0 And y 0 Print 在第四象限 End Select 方法二代碼錯誤 : 1. Select Case 后不能出現(xiàn)多個變量; 2. Case后不能出現(xiàn)變量及有關運算符 。 表達式列表 :與 變量或表達式 同類型的下面四種形式之一: 表達式 例 : A 一組枚舉表達式 (用逗號分隔 ) 2,4,6,8 表達式 1 To 表達式 2 60 To 100 Is 關系運算符表達式 Is 60 5. Select Case語句 (情況語句 ) 形式: Select Case 變量或表達式 Case 表達式列表 1 語句塊 1 Case 表達式列表 2 語句塊 2 … [Case Else 語句塊 n+1]