版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、VB程序設(shè)計(jì)的常用算法算法( Algorithm ):計(jì)算機(jī)解題的基本思想方法和步驟。 算法的描述:是對(duì)要解決一個(gè)問(wèn)題或要完成一項(xiàng)任務(wù)所采取 的方法和步驟的描述,包括需要什么數(shù)據(jù)(輸入什么數(shù)據(jù)、 輸出什么結(jié)果) 、采用什么結(jié)構(gòu)、使用什么語(yǔ)句以及如何安 排這些語(yǔ)句等。通常使用自然語(yǔ)言、結(jié)構(gòu)化流程圖、偽代碼 等來(lái)描述算法。一、計(jì)數(shù)、求和、求階乘等簡(jiǎn)單算法 此類問(wèn)題都要使用循環(huán),要注意根據(jù)問(wèn)題確定循環(huán)變量 的初值、終值或結(jié)束條件,更要注意用來(lái)表示計(jì)數(shù)、和、階 乘的變量的初值。例:用隨機(jī)函數(shù)產(chǎn)生 100 個(gè)0 ,99 范圍內(nèi)的隨機(jī)整數(shù), 統(tǒng)計(jì)個(gè)位上的數(shù)字分別為 1,2,3,4,5,6,7,8,9,0
2、的數(shù)的個(gè)數(shù)并打印出來(lái)。本題使用數(shù)組來(lái)處理,用數(shù)組 a(1 to 100) 存放產(chǎn)生的 確 100 個(gè)隨機(jī)整數(shù),數(shù)組 x(1 to 10) 來(lái)存放個(gè)位上的數(shù)字分 別為 1,2,3,4,5,6,7,8,9,0 的數(shù)的個(gè)數(shù)。即個(gè)位 是 1 的個(gè)數(shù)存放在 x(1) 中,個(gè)位是 2 的個(gè)數(shù)存放在 x(2) 中,個(gè)位是 0的個(gè)數(shù)存放在x(10)。將程序編寫在一個(gè) GetTJput 過(guò)程中,代碼如下:Public Sub GetTJput()Dim a(1 To 100) As IntegerDim x(1 To 10) As IntegerDim i As Integer, p As Integer 產(chǎn)生
3、 100 個(gè)0 , 99 范圍內(nèi)的隨機(jī)整數(shù), 每行 10 個(gè) 打印出來(lái)For i = 1 To 100a(i) = Int(Rnd * 100)If a(i) n(2) m除以n得余數(shù)r ;(3) 若r=0,則n為求得的最大公約數(shù),算法結(jié)束; 否則執(zhí)行(4);(4) m-n, nr,再重復(fù)執(zhí)行(2)。例如:求m=14 ,n=6的最大公約數(shù).mn r14 -6 262 0m=inputBox(m=) n=inputBox(n=) nm=n*mIf m n Then t = m: m = n: n = t r=m mod nDo While (r 0)m=nn=rr= m mod nLoopPri
4、nt 最大公約數(shù)=,nPrint 最小公倍數(shù)=,nm/n三、判斷素?cái)?shù)只能被1或本身整除的數(shù)稱為素?cái)?shù)基本思想:把m作為被除數(shù),將2 INT ( .m )作為除數(shù),如果都除不盡, m就是 素?cái)?shù),否則就不是。(可用以下程序段實(shí)現(xiàn))m =val( InputBox(請(qǐng)輸入一個(gè)數(shù))For i=2 To int(sqr(m)If m Mod i = 0 Then Exit ForNext iIf i int(sqr(m) ThenPrint 該數(shù)是素?cái)?shù)”ElsePrint 該數(shù)不是素?cái)?shù)”End If將其寫成一函數(shù),若為素?cái)?shù)返回True,不是則返回FalsePrivate Function Prime( m
5、 as Integer) As BooleanDim i%Prime=TrueFor i=2 To int(sqr(m)0 ThenIf m Mod iPrime=False: Exit ForNext iEnd Function四、排序問(wèn)題1選擇法排序(升序) 基本思想:1) 對(duì)有 n 個(gè)數(shù)的序列 (存放在數(shù)組 a(n) 中),從中選 出最小的數(shù),與第 1 個(gè)數(shù)交換位置;2) 除第 1 個(gè)數(shù)外,其余 n-1 個(gè)數(shù)中選最小的數(shù),與 第 2 個(gè)數(shù)交換位置;3) 依次類推,選擇了n-1 次后,這個(gè)數(shù)列已按升序排列。程序代碼如下:For i = 1 To n - 1 imin = i For j =
6、 i + 1 To nIf a(imin) a(j) Then imin = jNext j t = a(i) a(i) = a(imin) a(imin) = tNext I五、查找問(wèn)題1.順序查找法(在一列數(shù)中查找某數(shù)x)基本思想:一列數(shù)放在數(shù)組a(1)-a(n)中,待查找的數(shù)放在 x 中,把 x 與 a 數(shù)組中的元素從頭到尾一一進(jìn)行比較 查找。用變量 p 表示 a 數(shù)組元素下標(biāo), p 初值為 1,使 x 與 a(p)比較,如果x不等于a(p),則使p=p+1,不斷重復(fù)這個(gè) 過(guò)程;一旦 x 等于 a(p) 則退出循環(huán);另外,如果 p 大于數(shù)組 長(zhǎng)度,循環(huán)也應(yīng)該停止。 (這個(gè)過(guò)程可由下語(yǔ)句實(shí)
7、現(xiàn))p = 1Do While x a(p) And p =np = p + 1Loop下面寫一查找函數(shù) Find ,若找到則返回下標(biāo)值, 找不到返回 0Option Base 1Private Function Find( a( ) As Single,x As Single) AsIntegerDim n%,p%n=Ubound( a )p = 1Do While x a(p) And p n then p=0Find=pEnd Function基本思想:一列數(shù)放在數(shù)組a(1)-a(n)中,待查找的關(guān)鍵值為 key ,把 key 與 a 數(shù)組中的元素從頭到尾一一進(jìn)行比 較查找,若相同,查找
8、成功,若找不到,則查找失敗。 ( 查 找子過(guò)程如下。 index :存放找到元素的下標(biāo)。 )Public Sub Search(a() As Variant, key As Variant, index%)Dim i%For i = LBound(a) To UBound(a)If key = a(i) Thenindex = iExit SubEnd IfNext iindex = -1End Sub2折半查找法(只能對(duì)有序數(shù)列進(jìn)行查找)基本思想:設(shè) n 個(gè)有序數(shù)(從小到大)存放在數(shù)組 a(1)a(n)中,要查找的數(shù)為 x。用變量bot、top、mid分別表示查找 數(shù)據(jù)范圍的底部(數(shù)組下界)
9、 、頂部(數(shù)組的上界)和中間, mid=(top+bot)/2 ,折半查找的算法如下:(1) x=a(mid) ,則已找到退出循環(huán),否則進(jìn)行下面的判斷;(2) xa(mid) , x 必定落在 mid+1 和 top 的范圍之內(nèi),即bot=mid+1 ;( 4)在確定了新的查找范圍后,重復(fù)進(jìn)行以上比較,直到 找到或者 bot=top 。將上面的算法寫成如下函數(shù),若找到則返回該數(shù)所在的下標(biāo) 值,沒(méi)找到則返回 -1 。Function search(a() As Integer, x As Integer) As IntegerDim bot%, top%, mid%Dim find As Boo
10、lean 代表是否找到bot = LBound(a)top = UBound(a)find = False 判斷是否找到的邏輯變量,初值為 FalseDo While bot = top And Not findmid = (top + bot) 2 If x = a(mid) Then find = True Exit DoElseIf x a(p) and p a(p) And p a(row, Column) ThenMax = a(i, j)row = iColumn = jEnd IfNext jNext iPrint 最大元素是 ; MaxPrint 在第 & row & 行 ,;
11、 第 & Column & 列八、數(shù)制轉(zhuǎn)換將一個(gè)十進(jìn)制整數(shù) m轉(zhuǎn)換成 -r(2 - 16)進(jìn)制字符串。方法:將m不斷除r取余數(shù),直到商為零,以反序得到結(jié)果。下面寫出一轉(zhuǎn)換函數(shù),參數(shù)idee為十進(jìn)制數(shù),ibase為要轉(zhuǎn)換成數(shù)的基(如二進(jìn)制的基是2,八進(jìn)制的基是8等), 函數(shù)輸出結(jié)果是字符串。Private Function TrDec(idec As Integer, ibase AsInteger) As StringDim strDecR$, iDecR%strDecR =Do While idec 0iDecR = idec Mod ibaseIf iDecR = 10 ThenstrDe
12、cR= Chr$(65 + iDecR - 10) & strDecRElsestrDecR = iDecR & strDecREnd Ifidec = idec ibaseLoopTrDec = strDecREnd Function九、 字符串的一般處理1.簡(jiǎn)單加密和解密加密的思想是:將每個(gè)字母C加(或減)一序數(shù) K,即用它后的第K個(gè)字母代替,變換式公式:c=chr(Asc(c)+k)例如序數(shù) k 為 5,這時(shí)A F , a T f , B T G當(dāng)加序數(shù)后的字母超過(guò)Z或z則c=Chr(Asc(c)+k -26)例如:You are good Dtz fwj ltti解密為加密的逆過(guò)程將每
13、個(gè)字母C減(或加)一序數(shù)K即c=chr(Asc(c)-k),例如序數(shù) k為 5,這時(shí)Z U , z u ,丫 T 當(dāng)加序數(shù)后的字母小于 A或a則c=Chr(Asc(c)-k +26) 下段程序是加密處理:i = 1: strp = nL = Len(RTrim(strI)Do While (i = A And strT Asc(Z) Then iA = iA - 26strp = strp + Chr$(iA)ElseIf (strT = a And strT Asc(z) Then iA = iA - 26strp = strp + Chr$(iA)Elsestrp = strp + str
14、TEnd Ifi = i + 1LoopPrint strp2統(tǒng)計(jì)文本單詞的個(gè)數(shù) 算法思路:(1)從文本(字符串)的左邊開(kāi)始,取出一個(gè)字符;設(shè)邏輯量WT表示所取字符是否是單詞內(nèi)的字符,初值設(shè)為False( 2)若所取字符不是“空格” ,“逗號(hào)”,“分號(hào)”或“感嘆 號(hào)”等單詞的分隔符,再判斷WT是否為True,若WT不為True 則表是新單詞的開(kāi)始, 讓單詞數(shù) Nw=Nw+,1 讓 WT=True;(3) 若所取字符是“空格” ,“逗號(hào)”,“分號(hào)”或“感嘆號(hào)” 等 單 詞 的 分 隔 符 , 則 表 示 字 符 不 是 單 詞 內(nèi) 字 符 , 讓 WT=False;(4) 再依次取下一個(gè)字符,重
15、得( 2) (3) 直到文本結(jié)束 。 下面程序段是字符串 strI 中包含的單詞數(shù)Nw = 0: Wt = FalsenL = Len(RTrim(strI)取第 i 個(gè)字符For i = 1 To nL strT = Mid$(strI, i, 1) Select Case strTCase , , ;, !Wt = FalseCase ElseIf Not Wt Then Nw = Nw + 1 Wt = TrueEnd IfEnd SelectNext iPrint 單詞數(shù)為: , Nw十、窮舉法 窮舉法(又稱“枚舉法” )的基本思想是:一一 列舉各種可能的情況,并判斷哪一種可能是符合要求的解, 這是一種“在沒(méi)有其它辦法的情況的方法” ,是一種最“笨” 的方法,然而對(duì)一些無(wú)法用解析法求解的問(wèn)題往往能奏效, 通常采
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)藝術(shù)教育年度發(fā)展報(bào)告
- 長(zhǎng)春健康職業(yè)學(xué)院《測(cè)繪案例分析》2023-2024學(xué)年第一學(xué)期期末試卷
- 食品加工取樣與檢測(cè)流程
- AR眼鏡產(chǎn)品投資導(dǎo)覽模板
- 同學(xué)聚會(huì)講話稿
- 二零二五年度未成年人監(jiān)護(hù)權(quán)及撫養(yǎng)費(fèi)支付協(xié)議書3篇
- 重慶市部分區(qū)2024-2025學(xué)年高二(上)期末物理試卷(含答案)
- 福建省泉州市泉港區(qū)2024-2025學(xué)年七年級(jí)上學(xué)期1月期末生物學(xué)試題(含答案)
- 二零二五年度綠色建筑設(shè)計(jì)與施工一體化建設(shè)工程技術(shù)咨詢合同05013篇
- 宿州職業(yè)技術(shù)學(xué)院《python與數(shù)據(jù)處理基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- DL T774-2015規(guī)程試題庫(kù)(含答案)
- 采購(gòu)合同采購(gòu)合同采購(gòu)合同
- 云南省律師服務(wù)收費(fèi)管理辦法及標(biāo)準(zhǔn)
- 華為C語(yǔ)言通用編程規(guī)范
- 搞笑詩(shī)朗誦《生活》4人
- 團(tuán)建活動(dòng)滿意度調(diào)查問(wèn)卷
- 數(shù)獨(dú)題目難度系數(shù)3級(jí)共100題后附參考答案
- 齊魯醫(yī)學(xué)數(shù)字疼痛評(píng)分表
- GB∕T 7588.1-2020 電梯制造與安裝安全規(guī)范 第1部分:乘客電梯和載貨電梯
- 植物種植施工方案與技術(shù)措施
- 空調(diào)工程竣工驗(yàn)收單(共1頁(yè))
評(píng)論
0/150
提交評(píng)論