




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、常用算法總結(jié)(一) 一、變量值的交換算法思想:若交換兩個(gè)變量的值,必須引入第三個(gè)新的變量進(jìn)行傳遞。以下代碼是錯(cuò)誤的:X=12 :Y=34 :X=Y :Y=X正確的代碼是:X=12 :Y=23 :T=X :X=Y :Y=T二、判斷一個(gè)數(shù)是否能被另一個(gè)數(shù)整除算法思想:可以用整除的定義(余數(shù)為0)或X除以Y等于X整除Y等表達(dá)式進(jìn)行判斷。條件表達(dá)式可以為:X mod Y=0 或 X Y=X/Y 或 Int(X/Y)=X/Y如果以上條件表達(dá)式為True,則表示X能被Y整除。三、累加、階乘、計(jì)數(shù)和求平均值算法思想:使用循環(huán)語句,并用一個(gè)變量存放累加的中間及最終結(jié)果。注: 累加求和時(shí)變量初值為0,計(jì)算階乘時(shí)
2、變量初值為1。統(tǒng)計(jì)計(jì)個(gè)數(shù)(計(jì)數(shù))時(shí)可用一個(gè)變量作為統(tǒng)計(jì)個(gè)數(shù)的累加變量,每次加1即可。求平均值算法思想是先求和,再除以個(gè)數(shù)。條件求和(或計(jì)數(shù)):在循環(huán)語句中加入IfEnd If判斷語句。 例題:計(jì)算1到10之間所有整數(shù)的累加和以及10!。n=10sum=0 累加求和時(shí),變量的初值一定為0prod=1 累乘(連乘)時(shí),變量的初值一定為1For i=1 To n sum=sum+i prod=prod*iNext iPrint sum,prod 例題:統(tǒng)計(jì)0100之間能被3整除的數(shù)的個(gè)數(shù)、累加和及其平均值。 s=0 n=0 For i=0 To 100 If i mod 3 =0 Then s=s+
3、i n=n+1 End If Next i Print n,s,s/n四、對數(shù)組中的元素逐一進(jìn)行操作算法思想:在VB中,對于數(shù)組中元素的操作,往往使用到For循環(huán)。通用代碼為:Dim 數(shù)組名(下標(biāo)下界 To 下標(biāo)上界)For i=LBound(數(shù)組名) To UBound(數(shù)組名) 數(shù)組名 ( i ) Next i通過以上循環(huán),可以對數(shù)組中所有元素逐一操作。注:1) LBound函數(shù):返回?cái)?shù)組的下界 UBound函數(shù):返回?cái)?shù)組的上界2)如果數(shù)組上界和下界已經(jīng)確定,可以不使用函數(shù),直接指明即可。例如Option Base 1 Dim a(100) As IntegerFor i=1 To 100
4、 a ( i ) Next i3)對于二維數(shù)組,要使用For循環(huán)的嵌套實(shí)現(xiàn)對數(shù)組中元素的操作,其中外層循環(huán)變量控制第一維下標(biāo)的變化,內(nèi)層循環(huán)變量控制第二維下標(biāo)的變化,例如:Option Base 1 Dim a(2,3) As IntegerFor i=1 to 2 For j=1 to 3 a (i,j) Next jNext i例題:1對下標(biāo)為偶數(shù)的元素進(jìn)行處理的程序代碼Option Base 1For i=1 to UBound(a) 循環(huán)變量i可代表數(shù)組元素的下標(biāo)If i mod 2 =0 Then 1 / 6 a (i) End If Next i2對數(shù)組元素中數(shù)據(jù)為偶數(shù)的元素進(jìn)行處
5、理Option Base 1For i=1 to UBound(a) 循環(huán)變量i代表數(shù)組元素的下標(biāo)If a(i) mod 2 =0 Then a (i) End If Next i五、交換數(shù)組元素算法思想:若某一維數(shù)組有n個(gè)元素,將第1個(gè)元素和第n個(gè)元素交換,將第2個(gè)元素和第n-1個(gè)元素交換,需要交換n 2次(如果交換n次,則回到初始狀態(tài));對于二維數(shù)組,若進(jìn)行行交換或列交換,需要使用循環(huán)語句,每次循環(huán)需要使用變量值交換算法。例題:交換一維數(shù)組(5個(gè)元素)的元素值b = Array(1, 3, 5, 7, 9)For i = 0 To 5 2 tmp = b(i) b(i) = b(5 - i
6、 - 1) b(5 - i - 1) = tmpNext iEnd Sub例題:一維數(shù)組元素交換的通用代碼:n = UBound(數(shù)組名)For i = LBound(數(shù)組名) To n 2 t = b(i) b(i) = b(n) b(n) = t n = n - 1Next i例題:交換二維數(shù)組Mat第二列和第四列的數(shù)據(jù) For i=LBound(Mat,1) To UBound(Mat,1) t = Mat(i, 2) Mat(i, 2) = Mat(i, 4)Mat(i, 4) = tNext i例題:交換二維數(shù)組Mat第一行和第三行的數(shù)據(jù)For j=LBound(Mat,2) To
7、UBound(Mat,2) t = Mat(1, j) Mat(1,j) = Mat(3,j)Mat(3,j) = tNext i六、求數(shù)組元素中的最大值、最小值算法思想:假設(shè)數(shù)組中第一個(gè)元素為最大值,并賦給變量Max,然后使用循環(huán)結(jié)構(gòu)依次與第2個(gè)數(shù)組元素至最后一個(gè)元素進(jìn)行比較,如果某數(shù)組元素的值大于Max,則將該元素的值賦給Max(同時(shí)可記錄下該數(shù)組元素在數(shù)組中的位置)。例題:顯示數(shù)組a中的最大值及其下標(biāo)。Option Base 1 Dim Max As Integer, Index As IntegerMax=a(1)aIndex=1For i=2 to UBound(a) If a(i)
8、>Max Then Max=a(i) aIndex=i End IfNext iPrint Max , i 求最小值的方法與此類似,差別在于取第一個(gè)元素為最小值Min,與2個(gè)數(shù)組元素至最后一個(gè)元素進(jìn)行比較時(shí)判斷關(guān)系有所調(diào)整,即Min=a(1)If a(i)<Min Then Min=a(i)End If七、常用字符處理函數(shù) Mid函數(shù):從字符串指定位置取指定個(gè)字符,格式為Mid (字符,p,n) ,從第p個(gè)字符開始,向后截取n個(gè)字符(若n省略則取到最后)。Left和Right函數(shù):從字符串左邊或右邊取指定個(gè)字符,格式為 Left (字符,n)和Right (字符,n)。Len函數(shù):
9、測試字符串長度。UCase和LCase函數(shù):UCase將小寫字母轉(zhuǎn)換為大寫字母;LCase將大寫字母轉(zhuǎn)換為小寫字母。Instr(首字符位置 , 字符串1, 字符串2 , n):在字符串1中查找字符串2,如果找到,返回字符串2的第一個(gè)字符在字符串1中出現(xiàn)的位置。首字符位置是可選的,如果不指定,從字符串起始位置開始查找;如果指明,從指定的位置開始查找。Asc函數(shù):返回字符串中第一個(gè)字符的ASCII碼。Chr函數(shù):將一個(gè)數(shù)值轉(zhuǎn)換為其所對應(yīng)的字符。字符的比較規(guī)則是按ASCII碼順序比較,規(guī)則為 空格<”A”Z”<”a”z”小寫字母的ASCII比大寫字母的ASCII小32。 例題:1將所有文
10、本轉(zhuǎn)換為大寫(小寫)字母 可以直接使用UCase(LCase)函數(shù)轉(zhuǎn)換。例如:Text2.Text=UCase(Text1.Text)2對某個(gè)字符串的所有字符逐一處理算法思想:如果對某個(gè)字符串的所有字符逐一處理,即從字符串的第1個(gè)字符開始到最后一個(gè)字母,每次處理1個(gè)字符??梢允褂肍or循環(huán)實(shí)現(xiàn)。通用代碼為: For i=1 To Len(s) s1=Mid(s,i,1) Next i3字符轉(zhuǎn)換算法思想:通過字符的ASCII碼進(jìn)行處理(使用Asc函數(shù)),然后再使用Chr函數(shù)將ASCII轉(zhuǎn)換成字符。例題:將文本框Text1中字符按如下規(guī)律轉(zhuǎn)換ab、bcza,并顯示在文本框Text2中。 s = T
11、ext1.Text n = Len(s) For i = 1 To n s1 = Mid(s, i, 1) If s1 >= "a" And s1 <= "y" Then s2 = s2 + Chr(Asc(s1) + 1) ElseIf s1 = "z" Then s2 = s2 + "a" End If Next i Text2.Text = s2例題:將文本框Text1中的小寫字母轉(zhuǎn)換其對應(yīng)的大寫字母,將大寫字母轉(zhuǎn)換成小寫字母,并顯示在文本框Text2中。Private Sub Command1_
12、Click() s = Text1.Text n = Len(s) m = Asc("a") - Asc("A") For i = 1 To n s1 = Mid(s, i, 1) If s1 >= "a" And s1 <= "z" Then s2 = s2 + Chr(Asc(s1) - m) End If If s1 >= "A" And s1 <= "Z" Then s2 = s2 + Chr(Asc(s1) + m) End If Next
13、i Text2.Text = s2End Sub4判斷是否回文函數(shù)所謂回文是指順讀與倒讀都一樣的字符串,如“rececer”Function foundhuiwen(p As String) foundhuiwen = True k = Len(p) For i = 1 To k / 2 If Mid(p, i, 1) <> Mid(p, k + 1 - i, 1) Then foundhuiwen = False Exit For End If NextEnd Function 如果foundhuiwen函數(shù)返回值為True,表明字符串p為回文,否則表示不是回文。5統(tǒng)計(jì)某字符出現(xiàn)
14、次數(shù) 算法思想:對字符串中字符逐一判斷,如果是某字符,則統(tǒng)計(jì)變量加1。 例題:統(tǒng)計(jì)文本框Text1中字符i和j出現(xiàn)的次數(shù)(不區(qū)分大小寫)。 Private Sub Command1_Click() s = Text1.Text n = Len(s) For i = 1 To n s1 = Mid(s, i, 1) If UCase(s1) = "I" Then ni = ni + 1 If UCase(s1) = "J" Then nj = nj + 1 Next i Print ni, nj End Sub八、素?cái)?shù)素?cái)?shù)定義:只能被1和本身整除的正整數(shù)稱
15、為素?cái)?shù)(或稱質(zhì)數(shù))。例如11就是素?cái)?shù),它只能被1和11整除。算法思想:判別某數(shù)n是否是素?cái)?shù)的方法有很多,最簡單的是從素?cái)?shù)的定義來求解。對于n,從i=2,3,n-1判別n能夠被i整除,只要有一個(gè)能整除,n就不是素?cái)?shù),否則n是素?cái)?shù)。此種算法比較簡單,但速度慢,因此,可以將n被2到 (或n/2)間的所有整數(shù)除,如果都除不盡,則n就是素?cái)?shù),否則n是非素?cái)?shù)。 注:執(zhí)行For循環(huán)時(shí),循環(huán)變量等于終值仍進(jìn)入循環(huán),遇到Next語句,循環(huán)變量會自動(dòng)加上步長,因此如果循環(huán)正常完成后,循環(huán)變量的值將大于終值。例如:For i=1 To 4 If Then Exit ForNext i
16、Print i如果循環(huán)正常結(jié)束,則輸出結(jié)果為5(大于4)。如果循環(huán)過程中滿足If條件,執(zhí)行Exit For語句退出循環(huán),則i的值一定小于5。例題:判斷n是否是素?cái)?shù)。Private Sub Command2_Click() n = Val(Text1.Text) For j = 2 To n - 1 If n Mod j = 0 Then Exit For Next j If j > n-1 Then Print "是素?cái)?shù)" Else Print "不是素?cái)?shù)"End Sub例
17、題:輸出2n范圍的全部素?cái)?shù)。Private Sub Command1_Click()n = Val(Text1.Text)For i = 2 To n For j = 2 To Sqr(i) If i Mod j = 0 Then Exit For Next j If j > Sqr(i) Then Print iNext iEnd Sub使用Do While循環(huán)判斷是否是素?cái)?shù)的代碼為:Private Function isprime(a As Integer) As Bo
18、olean Dim flag As Boolean flag = True b = 2 Do While b <= Int(a / 2) And flag If Int(a / b) = a / b Then flag = False&
19、#160; Else b = b + 1 End If Loop isprime = flagEnd FunctionEnd Sub其中flag作為標(biāo)志變量,首先賦值為True,在循環(huán)體中,如果滿足If條件(即n能被其他數(shù)整除),則flag
20、重新賦值為False,最后根據(jù)flag的值可知n是否是素?cái)?shù)。九、最大公約數(shù)和最小公倍數(shù)算法思想:(1)對于已知兩數(shù)x、y,使得x>y(2)x除以y得余數(shù)r;(3)若r=0,則x為求得的最大公約數(shù),算法結(jié)束;否則執(zhí)行步驟(4)(4)xy,yr,再重復(fù)執(zhí)行(2)求得了最大公約數(shù)后,最小公倍數(shù)就可很方便地求出,即將原來的兩數(shù)相乘除以最大公約數(shù)。Private Sub Form_Click() x = Val(InputBox("請輸入第一個(gè)數(shù):") y = Val(InputBox("請輸入第二個(gè)數(shù):") If x <
21、 y Then t = x x = y y = t End If x 1 = x y1 = y Print x, y Do While y <> 0 r = x Mod y x = y y = r Loop Print "最大公約數(shù)為:" x
22、160;Print "最小公倍數(shù)為:" x1 *y1 / xEnd Sub 十、完數(shù)定義:一個(gè)數(shù)如果正好等于它的因子之和,這個(gè)數(shù)就稱為完數(shù)。例如,6的因子為1、2、3,而6=1+2+3,因此6是“完數(shù)”。例題:編程找出1000以內(nèi)的所有完數(shù)。Private Sub Command1_Click()OutputWanNumber 1000End Sub '求完數(shù)的過程Sub OutputWanNumber(ByVal n As Integer)Dim i As IntegerDim j As IntegerDim s As Integer
23、;For i = 1 To n s = 0 For j = 1 To i 2 If i Mod j = 0 Then s = s + j Next j If s = i Then Print i & "是完數(shù)"Next iEnd Sub 十一、水仙花數(shù)定義:“水仙花數(shù)”是指一個(gè)三位數(shù),其中各位數(shù)字的立方和等于該數(shù)本身(如15313+53+33)分析:此題的關(guān)鍵是要知道如何分離出一個(gè)三位數(shù)中的各位數(shù)字。例題:找出100999之間的所有“水仙花數(shù)”。Private Sub C
24、ommand1_Click() For i = 100 To 999 a = Int(i / 100) b = Int(i - 100 * a) / 10) c = i - Int(i / 10) * 10 If i = a 3 + b 3 + c 3 Then Print i End If Next iEnd Sub Priv
25、ate Sub Command1_Click() For n = 100 To 999 s = 0 a = n Do While a <> 0 b = a Mod 10 s = s + b * b * b a = a 10 Loop If s
26、= n Then Print n Next nEnd Sub十二、數(shù)列以下數(shù)列:1,1,2,3,5,8,13,21,的規(guī)律是從第3個(gè)數(shù)開始,每個(gè)數(shù)是它前面兩個(gè)數(shù)之和。 Private Sub Command1_Click() Dim a(50) As LongDim f As Long a(1) = 1 a(2) = 1 For i = 3 To Val(Text1.Text) f = a(i - 2) + a(i - 1) a(i) = f Next Text2.Text = fEnd Sub 以下數(shù)列:1,1,3,5,9,15,25,41,的規(guī)律是從第3個(gè)數(shù)開始,每個(gè)數(shù)是它前面兩個(gè)數(shù)的和加1。Private Sub Command1_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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025標(biāo)準(zhǔn)的中介進(jìn)口合同范本
- 2025年直聯(lián)式真空泵項(xiàng)目規(guī)劃申請報(bào)告模板
- 2025至2030年中國寬-窄流道板式換熱器行業(yè)投資前景及策略咨詢報(bào)告
- 2025至2030年中國復(fù)合軟管灌裝機(jī)行業(yè)投資前景及策略咨詢報(bào)告
- 2025年通信設(shè)備、計(jì)算機(jī)及其他電子設(shè)備項(xiàng)目立項(xiàng)申請報(bào)告
- 全科護(hù)理出科案例分享
- 2025至2030年中國冷壓紙行業(yè)投資前景及策略咨詢報(bào)告
- 工地食堂轉(zhuǎn)讓合同協(xié)議書
- 機(jī)構(gòu)項(xiàng)目合作合同協(xié)議書
- 2025年中國電梯限速器檢測儀市場調(diào)查研究報(bào)告
- 畜產(chǎn)品加工學(xué)復(fù)習(xí)資料
- 機(jī)房搬遷服務(wù)搬遷實(shí)施方案
- DLT電力建設(shè)施工及驗(yàn)收技術(shù)規(guī)范鍋爐機(jī)組篇
- 高苯丙氨酸(苯丙酮尿癥)血癥課件
- pet拉伸薄膜工藝
- 離心泵的結(jié)構(gòu)與工作原理通用課件
- 畜牧業(yè)的生物安全與疫情防控
- 關(guān)于皮膚科藥物知識講座
- 2025年日歷日程表含農(nóng)歷可打印
- 銳意進(jìn)取開拓新市場
- 焊接施工流程圖
評論
0/150
提交評論