VB常用算法(一)_第1頁(yè)
VB常用算法(一)_第2頁(yè)
VB常用算法(一)_第3頁(yè)
VB常用算法(一)_第4頁(yè)
VB常用算法(一)_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 常用算法(一)常用算法(一)算法是對(duì)某個(gè)問(wèn)題求解過(guò)程的描述 1. 1. 累加、連乘累加、連乘 1100的5或7的倍數(shù)的和 Sum = 0 i Mod 5 = 0 Or i Mod 7 = 0 Then Sum = Sum + i Print Sum 310的乘積 t = 1 For i =3 To 10 t = t * i Next i Print t思考:若把循環(huán)體前面置各變量初值的語(yǔ)句放在循環(huán)體內(nèi),程序運(yùn)行時(shí)會(huì)產(chǎn)生什么情況?1、計(jì)算、計(jì)算n!Private Sub Form_Click()鼠標(biāo)單擊窗體事件鼠標(biāo)單擊窗體事件Dim n%, s% %:整型數(shù)據(jù)類(lèi)型:整型數(shù)據(jù)類(lèi)型相當(dāng)于相當(dāng)于 D

2、im n As Integer,定義整數(shù)類(lèi)型變量,定義整數(shù)類(lèi)型變量n,sn = InputBox(請(qǐng)輸入請(qǐng)輸入n的值的值) n=5s = 1For i = 1 To n 循環(huán)循環(huán) 當(dāng)當(dāng)i=1-5時(shí)時(shí)s = s * i s=1*1*2*3*4*5=120Next iPrint n & !=; s /輸出輸出 5!=120End Sub2、計(jì)算、計(jì)算1!+2!+3!+.+10!Private Sub Form_Click()Dim s&, a& %整型整型 &長(zhǎng)整型長(zhǎng)整型 !單精度型單精度型 #雙精度型雙精度型 s = 0a = 1For i = 1 To 10 i

3、=1時(shí)時(shí) a=1*1 s=0+1=1a = a * ii=2時(shí)時(shí) a=1*2=2! s=1+2!s = s + ai=3時(shí)時(shí) a=1*2*3=3! s=1+2!+3!Next ii=4時(shí)時(shí) a=1*2*3*4=4! s=1+2!+3!+4!Print 1!+2!+.+10!=; sEnd Sub例例4.14 求自然對(duì)數(shù)e的近似值,要求其誤差小于0.00001,近似公式為: 該例題涉及兩個(gè)問(wèn)題: (1)用循環(huán)結(jié)構(gòu)求級(jí)數(shù)和的問(wèn)題。本例根據(jù)某項(xiàng)值的精度來(lái)控制循環(huán)的結(jié)束與否。 (2)累加:e=e+t 循環(huán)體外對(duì)累加和的變量清零 e=0 連乘:n=n*i 循環(huán)體外對(duì)連乘積變量置1 n=1 Private

4、 Sub Form_Click()Private Sub Form_Click() Dim i%,n&, t!, e! Dim i%,n&, t!, e! e = 0 : n = 1 e = 0 : n = 1 e存放累加和、n存放階乘 i = 0 : t = 1 i = 0 : t = 1 i計(jì)數(shù)器、t第i項(xiàng)的值 Do While t 0.00001Do While t 0.00001 e = e + t : i = i + 1 e = e + t : i = i + 1 累加、連乘 n = n n = n * * i : t = 1 / n i : t = 1 / n Lo

5、op Loop Print Print 計(jì)算了計(jì)算了 ; i; ; i; 項(xiàng)的和是項(xiàng)的和是 ; e; eEnd SubEnd Subm1i0ii!11i!1 . !1.3!1! 211!11ei2. 求素?cái)?shù)求素?cái)?shù)素?cái)?shù)是一個(gè)大于2,且不能被1和本身以外的整數(shù)整除的整數(shù)。 判別某數(shù)m是否為素?cái)?shù)最簡(jiǎn)單的方法是:對(duì)于m 從 i=2,3,m-1判別m能否被i整除,只要有一個(gè)能整除,m不是素?cái)?shù),否則m是素?cái)?shù)。例例4.15 求100以?xún)?nèi)素?cái)?shù)的代碼: For m = 2 To 100 For i = 2 To m - 1 If (m Mod i) = 0 Then GoTo NotNextM 當(dāng)運(yùn)行到當(dāng)運(yùn)行到

6、goto即會(huì)跳轉(zhuǎn)到對(duì)應(yīng)地方即會(huì)跳轉(zhuǎn)到對(duì)應(yīng)地方 Next i Print mNotNextM: Next mm是否為素?cái)?shù)求100以?xún)?nèi)的素?cái)?shù)思考:思考: 此例用Go To語(yǔ)句對(duì)非素?cái)?shù)不作判斷,若不用GoTo語(yǔ)句,如何修改程序? 判斷一個(gè)數(shù)判斷一個(gè)數(shù) M是不是素?cái)?shù)是不是素?cái)?shù)Private Sub Form_Click()m = Val(InputBox(請(qǐng)輸入一個(gè)數(shù):請(qǐng)輸入一個(gè)數(shù):)For i = 2 To m - 1 If m Mod i = 0 Then Exit For 退出退出for循環(huán)循環(huán)Next iIf i = m - 1 Then Print m; 是素?cái)?shù)是素?cái)?shù)Else Print m

7、; 不是素?cái)?shù)不是素?cái)?shù)End IfEnd Sub9 拿拿2-8每一個(gè)數(shù)去除每一個(gè)數(shù)去除 i=3時(shí)時(shí) 9 mod 3=0 輸出輸出100到到300之間的所有素?cái)?shù)之間的所有素?cái)?shù)(每行輸出每行輸出5個(gè))個(gè))Private Sub Form_Click()t = 0For m = 100 To 300 m=100 For i = 2 To m - 1 If m Mod i = 0 Then Exit For Next i If i = m - 1 Then Print Tab(t * 8); m;: t = t + 1 If t = 5 Then t = 0: Print Next mEnd Sub3.

8、3.窮舉法窮舉法 “窮舉法”也稱(chēng)為“枚舉法”或“試湊法”,即將可能出現(xiàn)的各種情況一一測(cè)試,判斷是否滿(mǎn)足條件,一般采用循環(huán)來(lái)實(shí)現(xiàn)。 例例4.16 百元買(mǎi)百雞問(wèn)題。假定小雞每只5角,公雞每只2元,母雞每只3元?,F(xiàn)在有100元錢(qián)要求買(mǎi)100只雞,編程列出所有可能的購(gòu)雞方案。 設(shè)母雞、公雞、小雞各為x、y、z只,根據(jù)題目要求,列出方程為: x+y+Z=100 3x+2y+0.5z=100三個(gè)未知數(shù),兩個(gè)方程,此題有若干個(gè)解。解決此類(lèi)問(wèn)題采用“試湊法”,把每一種情況都考慮到。 方法一:最簡(jiǎn)單三個(gè)未知數(shù)利用三重循環(huán)來(lái)實(shí)現(xiàn)。 方法二:從三個(gè)未知數(shù)的關(guān)系,利用兩重循環(huán)來(lái)實(shí)現(xiàn)。Private Sub Form_

9、Click()Dim x%, y%, z% %、!分別為整型和單精度型數(shù)據(jù)類(lèi)型、!分別為整型和單精度型數(shù)據(jù)類(lèi)型For x = 0 To 33 母雞母雞3元一只,最多元一只,最多33只只 = 0 To 50 step 1公雞公雞2元一只,最多元一只,最多50只只 z = 100 - x - y If x * 3 + y * 2 + 0.5 * z = 100 Then Print 母雞:母雞:; x, 公雞:公雞:; y, 小雞:小雞:; z End If Next y 下一個(gè)下一個(gè)y y=y+1 必須先結(jié)束內(nèi)循環(huán),才開(kāi)始下一次外循環(huán)必須先結(jié)束內(nèi)循環(huán),才開(kāi)始下一次外循環(huán)Next x 下一個(gè)下一個(gè)

10、x x=x+1End Sub4.4.遞推法遞推法 “遞推法”又稱(chēng)為“迭代法”,其基本思想是把一個(gè)復(fù)雜的計(jì)算過(guò)程轉(zhuǎn)化為簡(jiǎn)單過(guò)程的多次重復(fù)。每次重復(fù)都從舊值的基礎(chǔ)上遞推出新值,并由新值代替舊值。 例例4.17 猴子吃桃子。小猴在某天摘桃若干個(gè),當(dāng)天吃掉一半多一個(gè);第二天吃了剩下的桃子的一半多一個(gè);以后每天都吃尚存桃子的一半多一個(gè),到第7天要吃時(shí)只剩下一個(gè),問(wèn)小猴共摘下了多少個(gè)桃子?分析:這是一個(gè)“遞推”問(wèn)題,先從最后一天推出倒數(shù)第二天的桃子,再?gòu)牡箶?shù)第二天的桃子推出倒數(shù)第三天的桃子。設(shè)第n天的桃子為xn,那么它是前一天的桃子數(shù)的xn-1 的一半減1,即xn =( xn-1 +1)2Private

11、Sub Form_Click()Dim x%, i%x = 1For i = 7 To 1 Step -1 Print 第第; i; 天的桃子數(shù)為:天的桃子數(shù)為:; x x = (x + 1) * 2Next iEnd Sub5.5.最小、最大值最小、最大值在若干個(gè)數(shù)中求最大值,一般先假設(shè)一個(gè)較小的數(shù)為最大值的初值,若無(wú)法估計(jì)較小的值,則取第一個(gè)數(shù)為最大值的初值;然后將每一個(gè)數(shù)與最大值比較,若該數(shù)大于最大值,將該數(shù)替換為最大值;依次逐一比較。例例 隨機(jī)產(chǎn)生隨機(jī)產(chǎn)生1010個(gè)個(gè)100100200200之間的數(shù),求最大值。之間的數(shù),求最大值。 Private Sub Command1_Click(

12、) Max = 100 For i = 1 To 10 x = Int(Rnd * 101 + 100) Print x; If x Max Then Max = x Next i Print Print 最大值=; MaxEnd Sub求兩個(gè)整數(shù)的最大公約數(shù)、最小公倍數(shù)求兩個(gè)整數(shù)的最大公約數(shù)、最小公倍數(shù)Private Sub Form_Click()m = Val(InputBox(請(qǐng)輸入第一個(gè)數(shù):請(qǐng)輸入第一個(gè)數(shù):)n = Val(InputBox(請(qǐng)輸入第二個(gè)數(shù):請(qǐng)輸入第二個(gè)數(shù):)Print m=; m, n=; nIf m n Then t = m: m = n: n = tr = m Mod nDo While r 0 m = n n = r r = m Mod nLoopPrint 最大公約數(shù)是最大公約數(shù)是:; nEnd Sub 常常 見(jiàn)見(jiàn) 錯(cuò)錯(cuò) 誤誤1. 不循環(huán)或死循環(huán)的問(wèn)題不循環(huán)或死循環(huán)的問(wèn)題 主要是循環(huán)條件、循環(huán)初值、循環(huán)終

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論