




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1.累加與連乘 1、算法說明連乘形式:V=V*e分析累加形式:V=V+e其中:V是變量,e是遞增表達(dá)式。累加和連乘一般通過循環(huán)結(jié)構(gòu)來實(shí)現(xiàn)。注意:需在執(zhí)行循環(huán)體前對(duì)變量V賦初值。一般累加時(shí)置初值0;連乘時(shí)置初值為1舉例求N!的結(jié)果。PrivateSubCommand1_Click()Dimn%,i%,s&n=Val(lnputBox(輸入n)s=1Fori=1TonNextiPrintsEndSub應(yīng)用舉例根據(jù)下列公式,求自然對(duì)數(shù)e的的近似值1=1+-1要求:誤差小于0.00001PrivateSubCommand1_Click()Dimi%,n&,t!,e!e=2i=1t=1DoWhilet0
2、.00001i=i+1t=t/ie=e+tLoopPrint計(jì)算了;i;項(xiàng)目和是:;ePrintExp(1)與上句輸出值進(jìn)行對(duì)比以證明算法的正確性EndSub2.最值問題1、算法說明3.素?cái)?shù)問題 在若干數(shù)中求最大值,一般先取第一個(gè)數(shù)為最大值的初值(即假設(shè)第一個(gè)數(shù)為最大值),然后,在循環(huán)體內(nèi)將每一個(gè)數(shù)與最大值比較,若該數(shù)大于最大值,將該數(shù)替換為最大值,直到循環(huán)結(jié)束。求最小值的方法類同。求若干數(shù)平均值,實(shí)質(zhì)上就是先求和,再除以這些數(shù)的個(gè)數(shù)。應(yīng)用舉例:隨機(jī)產(chǎn)生n個(gè)1-100(包括1和100)的數(shù),求它們的最大值、最小值和平均值。PrivateSubCommand1_Click()Dimn%,i%,m
3、in%,max%,aver!,s%n二Val(lnputBox(輸入個(gè)數(shù):)s=Int(Rnd*100)+1max=s:min=s:aver=sPrint第1個(gè)數(shù)是:”&sFori=2Tons=Int(Rnd*100)+1Print第”&i&”個(gè)數(shù)是:”&sIfsmaxThenmax=sIfsminThenmin=saver=aver+sNextiaver=aver/nPrintmax=;max;min二;min;aver二;averEndSub解題技巧:最大值、最小值、平均值類型題目往往和數(shù)組放在一起考!有的不僅求這些值,還要對(duì)具有最大值或者最小值的行或列或者某個(gè)元素進(jìn)行處理,這時(shí)就要在記錄
4、最大、最小值時(shí),同時(shí)記錄該值所在的行號(hào)和列號(hào)。1、算法說明素?cái)?shù)(質(zhì)數(shù)):就是一個(gè)大于等于2的整數(shù),并且只能被1和本身整除,而不能被其他整數(shù)整除的數(shù)。判別某數(shù)m是否是素?cái)?shù)的經(jīng)典算法是:對(duì)于m,從I二2,3,4,m-1依次判別能否被I整除,只要有一個(gè)能整除,m就不是素?cái)?shù),否則m是素?cái)?shù)。PrivateFunctionsushu(ByValnAsInteger)AsBooleanDimiAsIntegerFori=2Ton-1If(nModi)=0ThenExitForNextIIfI=nthensushuTrueEndFunction很顯然,實(shí)際上,我們可以改進(jìn)上面PrivateFunctionsu
5、shu(ByValnAsInteger)AsBooleanDimiasIntegerFori=2toInt(Sqr(n)IfXModi=0ThenExitFunctionNextisushu=TrueEndFunction這樣可以很好的提高效率。以上判斷是否為素?cái)?shù)的代碼務(wù)必識(shí)記!應(yīng)用舉例:求100-200之內(nèi)素?cái)?shù)。PrivateSubCommand1_Click()DimjAsIntegerForj=100To200Ifsushu(j)=TrueThenPrintjEndIfNextjEndSub實(shí)例說明編程題:找出10000以內(nèi)所有可以表示為兩個(gè)平方數(shù)和的素?cái)?shù)。思路:首先找10000以內(nèi)的所
6、有素?cái)?shù),對(duì)于每個(gè)素?cái)?shù)判斷其是否可以表示為兩個(gè)平方數(shù)之和(即對(duì)于任意小于該素?cái)?shù)shu的數(shù)I,如果I和shu-I均為平方數(shù),則說明其可以表示為兩個(gè)平方數(shù)之和。)判斷數(shù)I是否為平方數(shù)的方法:Sqr(i)=lnt(Sqr(i)PrivateSubCommand1_Click()DimjAsInteger,mAsinteger,nAsIntegerForj=2To10000Ifsushu(j)=TrueThenIfpf(j,m,n)TrueThenListI.Additemj&一&m&+&nEndIfEndIfNextjEndSubPrivateFunctionpf(ByVaIshuAsInteger,
7、mAsInteger,nAsInteger)AsBooIeanDimiAsLongFori=1Toshu-1If(Sqr(i)=Int(Sqr(i)And(Sqr(shu-i)=Int(Sqr(shu-i)Thenpf=Truem=in一shu-iExitFunctionEndIfNextEndFunction5.最大公約數(shù)、最小公倍數(shù)5.最大公約數(shù)、最小公倍數(shù)4.進(jìn)制轉(zhuǎn)換 1、算法說明十進(jìn)制正整數(shù)m轉(zhuǎn)換為R(2-16)進(jìn)制的字符串。思路:將m不斷除r取余數(shù),直到商為0,將余數(shù)反序即得到結(jié)果。算法實(shí)現(xiàn):PrivateFunctionTran(ByVaimAsInteger,ByVairAsIn
8、teger)AsStringDimStrDtoRAsString,nAsIntegerDoWhilemon二mModrm=mrIfn9ThenStrDtoR=Chr(65+n-10)&StrDtoRElseStrDtoR=n&StrDtoREndIfLoopTran二StrDtoREndFunctionR(2-16)進(jìn)制字符串轉(zhuǎn)換為十進(jìn)制正整數(shù)。思路:R進(jìn)制數(shù)每位數(shù)字乘以權(quán)值之和即為十進(jìn)制數(shù)。算法實(shí)現(xiàn):PrivateFunctionTran(ByVaisAsString,ByVairAsInteger)AsIntegerDimiasInteger,nAsInteger,decAsInteger
9、s=UCase(Trim(s)Fori=1ToLen(s)IfMid(s,i,1)=AThenn二Asc(Mid(s,i,1)-Asc(A)+10Elsen二Val(Mid(s,i,1)EndIfdec=dec+n*r八(Len(s)-i)NextiTran二decEndFunction解題技巧:進(jìn)制轉(zhuǎn)化的原理要清楚,同時(shí)編寫代碼時(shí)候要留意16進(jìn)制中的A-F字符的處理。算法(五)約數(shù)因子-1、算法說明1)最大公約數(shù):用輾轉(zhuǎn)相除法求兩自然數(shù)m、n的最大公約數(shù)。首先,對(duì)于已知兩數(shù)m、n,比較并使得mn;m除以n得余數(shù)r;(3)若r=0,則n為求得的最大公約數(shù),算法結(jié)束;否則執(zhí)行步驟分析步驟:m24
10、,n924與9r=mModn6(4)mnnr再重復(fù)執(zhí)行(2)20,m=9,n二二6r一mModn-320,m-6,n二3r一mModn-03為最大公約數(shù)。分析步驟:10與5m=10,n二5r=mModn一0|所以n(n=5)為最大公約數(shù)算法實(shí)現(xiàn):循環(huán)PrivateFunctionGCD(ByValmAsLong,ByVainAsLong)AsLongDimtempAsLong,rAsLongIfmnThentemp=m:m=n:n一tempDor=mModnIfr=0ThenExitDom=nnrLoopGCD=nEndFunction算法實(shí)現(xiàn):遞歸PrivateFunctionGCD(ByV
11、almAsLong,ByVainAsLong)AsLongDimtempAsLong,rAsLongIfmnThentemp=m:m=n:n一tempr=mModnIfr=0ThenGCD=nElsenrGCD=GCD(m,n)EndIfEndFunction最小公倍數(shù):mxn眾大公約數(shù)互質(zhì)數(shù):最大公約數(shù)為1的兩個(gè)正整數(shù)解題技巧:該算法需要識(shí)記!這種類型題目的擴(kuò)展是約數(shù)和因子題型 6.排序1、算法說明1)選擇法排序從n個(gè)數(shù)中選出最小數(shù)的下標(biāo),出了循環(huán),將最小數(shù)與第一個(gè)數(shù)交換位置;除第一個(gè)數(shù)外,在剩下的n-1個(gè)數(shù)中再按方法(1)選出次小的數(shù),與第二個(gè)數(shù)交換位置;以此類推,最后構(gòu)成遞增序列。譬如:
12、869327第一輪交換后269387第二輪交換后239687第三輪交換后236987第四輪交換后236789第五輪無交換236789程序代碼如下:PrivateSubxzPaiXu(a()AsDouble,shengAsBoolean)a為需要排序的數(shù)組,sheng為True則為升序排列,為False,則為降序排列。DimiAsInteger,jAsInteger,tempAsDouble,mAsIntegerFori=LBound(a)ToUBound(a)-1進(jìn)行數(shù)組大小-1輪比較m=i在第i輪比較時(shí),假定第i個(gè)元素為最值元素Forj=i+1ToUBound(a)在剩下的元素中找出最值元素
13、的下標(biāo)并賦值給IfshengThen若為升序,則m記錄最小元素下標(biāo),否則記錄最大元素下標(biāo)Ifa(j)a(m)Thenm=jEndIfNextjtemp=a(i):a(i)=a(m):a(m)=temp將最值元素與第i個(gè)元素交換NextiEndSub調(diào)用該過程示例:OptionBase1PrivateSubCommand1_Click()Dimb(6)AsDoubleb(1)=8:b(2)=6:b(3)=9:b(4)=3:b(5)=2:b(6)=7CallxzPaiXu(b,True)Fori%=1To6Printb(i)NextEndSub2)冒泡法排序選擇排序法在每一輪排序時(shí)找最值元素的下標(biāo)
14、,出了內(nèi)循環(huán)(一輪排序結(jié)束),再交換最小數(shù)的位置;而冒泡法在每一輪排序時(shí)將相鄰的數(shù)比較,當(dāng)次序不對(duì)就交換位置,出了內(nèi)循環(huán),最值數(shù)已經(jīng)冒出。669933227第一輪排序:從右至左將最小的數(shù)移至最右邊。7866922-93-37872-86-699337733868977693366778899程序代碼如下:PrivateSubmpPaiXu(a()AsDouble,shengAsBoolean)a為需要排序的數(shù)組,sheng為True則為升序排列,為False,貝卩為降序排列DimiAsInteger,jAsInteger,tempAsDoubleFori=LBound(a)ToUBound(a
15、)-1Forj進(jìn)行n-i輪比較=UBound(a)Toi+1Step-1Ifsheng從n到i個(gè)元素兩兩進(jìn)行比較Then若次序不對(duì),馬上進(jìn)行交換Ifa(j)a(j-1)Thentemp=a(j):a(j)=a(j-1):a(j-1)=tempEndIfEndIfNextj出了內(nèi)循環(huán),一輪排序結(jié)束,最值元素冒到最上邊NextiEndSub數(shù)組元素插入刪除-7.在數(shù)組中插入或刪除元素 1、算法說明數(shù)組中元素的插入和刪除一般是在已固定序列的數(shù)組中插入或刪除一個(gè)元素,使得插入或刪除操作后的數(shù)組還是有序的。基本思路:首先要找到插入位置或要?jiǎng)h除的元素。1)插入代碼如下:Dima(10)AsInteger,
16、iAsInteger,kAsIntegerFori=0To9生成數(shù)組a(i)=i*3+1Printa(i);NextiPrintPrint插入14Fork=0To9查找插入14在數(shù)組中的位置If14high沒有查找到Thenindex=-1ExitSubEndIfmid=(low+high)2IfKey=a(mid)Thenindex=mid取查找區(qū)間的中點(diǎn)查找到,返回下標(biāo)ExitSubElseIfKeyAsc(Z)TheniAsc=iAsc-26Code=Code&Chr(iAsc)CaseaToziAsc-26iAsc=Asc(c)+5IfiAscAsc(z)TheniAsc=Code=C
17、ode&Chr(iAsc)CaseElseCode=Code&cEndSelectNextiText2.Text=CodeEndSub2)統(tǒng)計(jì):統(tǒng)計(jì)字符或者數(shù)字出現(xiàn)的次數(shù)。算法說明:以字符統(tǒng)計(jì)為例,設(shè)基本問題如下:請(qǐng)統(tǒng)計(jì)一段文本中英文字母在文本中出現(xiàn)的次數(shù)。(不區(qū)分大小寫)女如:Iamastudent得到:A:2d:1e:1l:1m:1n:1s:1t:2u:1分析:由于不區(qū)分大小寫,因此可定義一個(gè)大小為26(下標(biāo):025)的數(shù)組,每個(gè)元素依次記錄A、B、CZ字母出現(xiàn)的次數(shù)。A(0)存放字母a出現(xiàn)的次數(shù)A(1)存放字母b出現(xiàn)的次數(shù)A(2)存放字母c出現(xiàn)的次數(shù)代碼如下:OptionExplicitPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,zimu(25)AsInteger,allStrAsString,aStrAsStringallStr=UCase(Textl.Text)Fori=1ToLen(Textl.Text)aStr=Mid(allStr,i,1)IfaSt
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 水泥路面施工承包合同
- 辦公樓裝修合同合同
- 委托招聘合同協(xié)議
- 招標(biāo)信息合作協(xié)議書
- 出版業(yè)數(shù)字化出版與版權(quán)保護(hù)管理方案
- 建筑原材料采購(gòu)合同
- 樓房租賃合同
- 傳統(tǒng)行業(yè)數(shù)字化轉(zhuǎn)型路徑選擇及實(shí)施方案研究項(xiàng)目
- 電子行業(yè)電子設(shè)備保修協(xié)議
- 項(xiàng)目進(jìn)展困難原因分析與解決方案說明報(bào)告
- 雨水管道中粗砂回填
- 團(tuán)意操作流程詳解課件
- SH/T 0356-1996燃料油
- 第1課中華優(yōu)秀傳統(tǒng)文化的內(nèi)涵與特點(diǎn)課件(共28張PPT)
- 耳鼻咽喉頭頸外科學(xué)-鼻科癥狀學(xué)課件
- 輪胎使用日常說明
- 第8章 動(dòng)車組空調(diào)裝置檢修動(dòng)車組維護(hù)與檢修
- 《幼小銜接存在的問題及對(duì)策研究(論文)6400字》
- 英語詞匯量測(cè)試附答案
- 七年級(jí)上冊(cè)整式的化簡(jiǎn)求值專題訓(xùn)練26914
- 通信工程監(jiān)理方案
評(píng)論
0/150
提交評(píng)論