


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
(完整版)vb常用算法介紹(完整版)vb常用算法介紹一、累加算法如果在設(shè)計(jì)過程中遇到求1+2+3+……+100等連加問題時,就可以用累加算法來解決。累加算法的一般做法是設(shè)一個變量s,0,設(shè)一個變量用來保存加數(shù)。一般在累例:求1+2+3++100的累加和,并打印輸出分析:設(shè)累加器S,初值為0,加數(shù)用變量I表示當(dāng)I=1時,累加器S=S+I=0+1=1當(dāng)I=2時,累加器S=S+I=1+2=3當(dāng)I=3時,累加器S=S+I=3+3=6當(dāng)I=4時,累加器S=S+I=6+4=10……當(dāng)I=100時,累加器S=S+100=1+2+3+……+99+100=50501100次,所以該程序段可寫成:DimS=I0AsInteger,SAsInteger‘給累加器s賦初值ForS=1To100S=S+I‘I既作為循環(huán)變量,又作為加數(shù)NextIPrint"1+2+……100=”;S考慮一下:語句Print”1+2+……100=”;S可以放在循環(huán)體中嗎?延伸一下:上述算法對數(shù)值型數(shù)據(jù),執(zhí)行的是累加操作,如果對字符串型數(shù)據(jù),完成的是字符串的連接.例:從鍵盤上輸入一串字符,要求將其加密后顯示在文本框Text1中,加密的方法是將每一個字符轉(zhuǎn)變?yōu)樗暮笠晃蛔址?,如:A轉(zhuǎn)變?yōu)锽,1轉(zhuǎn)變?yōu)?。分析:因?yàn)樯婕皩γ恳粋€字符做相應(yīng)處理再連接成一個新串,所以可以用類似累加的算法。定義一個變量str1用來接收輸入的原始字符串,變量str2用來接收加密后的字符串,初值為空串??捎肔en()函數(shù)得出字符串的長度,用循環(huán)控制,從左向右逐個取字符,截取字符的功能可用函數(shù)Mid()完成,由于要做加密操作,可利用Asc()函數(shù)獲得字符的Ascii碼,用Chr()函數(shù)獲得Ascii碼對應(yīng)的字符。程序段如下:Dimstr1AsString,chAsString*DimiAsInteger,str2AsStringstr1=InputBox(”輸入原始字符串:”)Fori=1ToLen(str1)str2=str2+Chr(Asc(Mid(str1,i,1))+1) NextiText1.Text=str2考慮一下:如果要實(shí)現(xiàn)字符的逆序連接,該怎么辦?二、連乘算法連乘算法的一般做法是定義一個變量t,作為乘法器使用,初值為1,設(shè)一個變量用來保存乘數(shù)。例:求10!=1*2*3*……*10的結(jié)果并打印輸出分析:與累加算法類似,只不過加法變成乘法。t1,設(shè)變量II=1T=T*I=1*1=1I=2T=T*I=1*2=2I=3……當(dāng)I=10時,T=T*I=1*2*3*……*9*10I110DimIAsInteger,TAslongT=1ForI=1To10T=T*INextIPrint”1*2*3*……*10=";T例:求1!+2!+……+10!的值分析:1、、31!、2!10s作累加器,設(shè)一個變量t10110!。設(shè)循環(huán)變量i110,每一次循環(huán)執(zhí)行一次累加操作,每次累加的加數(shù)tiI!的值,可設(shè)循環(huán)控制變量j,按如下程序段完成求i!:t=1Forj=1Toit=t*jNextj結(jié)合累加算法,求!+2!+……+10!的程序段如下:DimiAsInteger,jAsIntegerDimsAsLong,tAsLongs=0Fori=1To10t=1Forj=1Toit=Nextjs=s+tNexti
t*jPrint”1!+2!+……+10!=";s程序執(zhí)行流程是:I=1,計(jì)算t=1!,s=0+1!=1!I=2,計(jì)算t=2!,s=1!+2!I=3,計(jì)算t=3!,s=1!+2!+3!……I=10,計(jì)算t=10!,s=1!+2!+3!+4!+5!+6!+7!+8!+9!+10!考慮一下:(1):語句t=1是否可以和s=0一樣,放在外循環(huán)外?(答案:不可以!循環(huán)初始化所放置的位置要牢記以下原則:外循環(huán)初始化應(yīng)放在外循環(huán)的外面,內(nèi)循環(huán)初始化應(yīng)放在外循環(huán)體內(nèi),內(nèi)循環(huán)體外。)(2):stInteger(整型)嗎?(832767,所以s和t否則會發(fā)生溢出.)優(yōu)化:由于n!=(n—1)!*n,即2!=1!*2,3!=2!*3,……,10!=9!*10,所以上述程序段還可進(jìn)行以下的優(yōu)化:DimiAsInteger,jAsIntegerDimsAsLong,tAsLongs=0t=1 ‘這時t=1Fori=1To10t=t*is=s+tNextiPrint”1!+2!+……+10!=";s執(zhí)行流程為:歸納一下:
I=1,計(jì)算t=1*1=1!,s=0+1!=1!I=2,計(jì)算t=1!*2=2!,s=1!+2!I=3,計(jì)算t=2?。?=3!,s=1!+2!+3!……I=10,計(jì)算t=9!*10=10!,s=1!+2!+3!+4!+5!+6!+7!+8!+9!+10!所有累加次數(shù)確定的累加程序都可以采用如下的編程模式:定義累加器s,初值為0或根據(jù)情況賦一個特定值,設(shè)變量t存放加數(shù),假設(shè)累加次數(shù)為n次,則程序段可按如下框架編寫:s=0Fori=1Tons=s+tNextI統(tǒng)計(jì)算法干個變量用來作計(jì)數(shù)器,專門來統(tǒng)計(jì)滿足相應(yīng)條件的量,有多少個統(tǒng)計(jì)要求,就定義多少個計(jì)數(shù)器,在程序設(shè)計(jì)過程中,分別判斷是否滿足指定條件,若滿足條件,則指定的計(jì)數(shù)器加1。如果計(jì)數(shù)器太多,而且相互例:在文本框中輸入一串字符,統(tǒng)計(jì)其中的字母、數(shù)字和其他字符的個數(shù)。基本思路:要統(tǒng)計(jì)滿足指定要求的字符個數(shù),應(yīng)定義相應(yīng)變量(如n)作為計(jì)數(shù)器,初值為0,每找到符合條件的字符,將指定計(jì)數(shù)器的值加1。3個計(jì)數(shù)器n1n2n3,0,1,果是數(shù)字,n21,否則n31PrivateSubCommand1_Click()DimstrAsString,iAsInteger,chAsString*1Dimn1AsInteger,n2AsInteger,n3AsIntegern1=0:n2=0:n3=0:str=Text1。TextFori=1ToLen(str)ch=Mid(str,i,1)IfUCase(ch)〈="Z"AndUCase(ch)>=”A”Thenn1=n1+1n11ElseIfch〉=”0”Andch〈="9”Thenn2=n2+1n21ElseEndIfNexti
n3=n3+1 n31Text2=“字母的個數(shù)為"&n1&Chr(13)&Chr(10)Text2=Text2&“數(shù)字的個數(shù)為” & n2 &Chr(13)&Text2=Text2 &“其他字符的個數(shù)為”& n3EndSub求最大值和最小值在N個數(shù)中求最大值和最小值的思路是定義一個變量假設(shè)為max1個數(shù)賦給maxmaxminmax大,將該數(shù)賦給max,如果比min小,將該數(shù)賦給min,即讓max中總是放當(dāng)前的最大數(shù),讓minmaxmin201100任何一個隨機(jī)整數(shù)xRnd(01要產(chǎn)生在區(qū)間[M,Nx,可用以下公式完成:x=Int(Rnd*(N-M+1))+N1100x的產(chǎn)生可用以下語句完成:x=Int(Rnd*100)+1按照求最大值和最小值的算法思想,可編寫程序如下:PrivateSubForm_click()DimiAsInteger,xAsIntegerDim maxAsInteger, minAsRandomize ‘隨機(jī)函數(shù)初始化maxmin==Int(Rnd*100)+1maxFori=1To19‘給maxminx=Int(Rnd*100)maxmin==Int(Rnd*100)+1maxFori=1To19If x>maxThenmax=xIf x〈minThenmin=Next iPrint“最大值是”& maxPrint“最小值是”& EndSub素?cái)?shù)判斷一個數(shù)如果只能被1和其本身整除,而不能被其他任何數(shù)整除,那么這個數(shù)就稱為素?cái)?shù)。我們通過下面的例子來說明判斷素?cái)?shù)算法的基本思路。7,24素?cái)?shù)”的提示。分析:由素?cái)?shù)的定義,判斷任一個整數(shù)n是否是素?cái)?shù)的算法是讓n2n—1(或n/2、sqr(n))nnnnI,I2n—1Inn不是素?cái)?shù),下面就不用再進(jìn)行判斷,提前跳出循環(huán);如果所有的I都不能被n關(guān)鍵是如何知道跳出循環(huán)后是提前跳出還是正常退出?對于這種有兩種判斷結(jié)果的處理,一般采用標(biāo)志變量。設(shè)一個變量,假設(shè)命名為Flag,F(xiàn)lagTrue,如果提前跳出循環(huán),F(xiàn)lag的值賦為Flag程序如下:PrivateSubCommand1_Click()DimiAsInteger,nAsIntegerDimflagAsBooleanflag=True n=Val(Text1。Text)Fori=2 To n—1IfnModi=0flag=False ‘如果In整除,將flagExitForEndIfNextiIfflag=TrueThen ‘該條件也可寫成If flag MsgBoxn&是素?cái)?shù)”ElseEndEndSub
MsgBoxn&"不是素?cái)?shù)"另一種方法:還可以在循環(huán)結(jié)束后通過循環(huán)控制變量的值來進(jìn)行素?cái)?shù)的判斷。如果是素?cái)?shù),循環(huán)將正常結(jié)束,循環(huán)n終值。程序如下:PrivateSubCommand1_Click()DimiAsInteger,nAsIntegern=Val(Text1.Text)Fori=2 To n—1IfnModi=0Then ExitForNextiIf i=n Then ‘該條件也可寫成If flag MsgBoxn&”是素"ElseMsgBoxn&"不是素?cái)?shù)”EndIfEndSub求最大公約數(shù)求任意兩個正整數(shù)的最大公約數(shù)可用輾轉(zhuǎn)相除法來求。假設(shè)要求任兩個整數(shù)mnmn的余數(shù)n的值作為mr的值作為nmnr,r0m注意:由于循環(huán)程序次數(shù)不確定,應(yīng)采用do—loop循環(huán)結(jié)構(gòu)。例:在兩個文本框Text1Text2輸入兩個正整數(shù),單擊命令按鈕Command1后在窗體上輸出其最大公約數(shù)。程序如下:PrivateSubCommand1_Click()DimmAsInteger,nAsIntegerDimrAsInteger‘定義存放余數(shù)的變量m=Val(Text1.Text)n=Val(Text2Text)Printm;”和”;n;”的最大公約數(shù)為”;Dor=mModm=nn=rLoopUntilr=0PrintmEndSub考慮一下:可以將第一條print語句放在執(zhí)行循環(huán)以后嗎?(答案:不可以。因?yàn)閳?zhí)行完循環(huán)后mn)將以上程序添加相應(yīng)語句就可完成求最小公倍數(shù)的功(M和n的最小公倍數(shù)等于
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 冷熱療技術(shù)試題及答案
- 航空行業(yè)面試經(jīng)驗(yàn)分享:空運(yùn)崗位面試題庫
- 提供針對不同職業(yè)崗位的模擬面試題目及答案示例
- 求職之路從這里起步:山東泗水面試題庫系列解析
- 專業(yè)編輯崗位技能提升:專項(xiàng)選調(diào)面試題目及答案深度解析
- 學(xué)前班比較數(shù)的大小課件
- 2025年建筑行業(yè)全過程管理BIM技術(shù)與項(xiàng)目管理軟件應(yīng)用研究報(bào)告
- 工業(yè)互聯(lián)網(wǎng)平臺增強(qiáng)現(xiàn)實(shí)交互技術(shù)在工業(yè)生產(chǎn)流程優(yōu)化中的應(yīng)用案例報(bào)告
- 美妝行業(yè)個性化定制服務(wù)模式下的美妝產(chǎn)品定制成本分析報(bào)告
- 學(xué)會包餛飩課件
- 氣管及支氣管內(nèi)插管
- 2025年高處吊籃安裝拆卸工(建筑特殊工種)證考試題庫
- 2025年新云南會計(jì)靈活用工協(xié)議書
- 2024年揚(yáng)州市輔警真題
- 超聲醫(yī)學(xué)心包填塞診斷與應(yīng)用
- 2025年初中音樂教師招聘考試試卷含答案(三套)
- (高清版)DB34∕T 5243-2025 預(yù)制艙式磷酸鐵鋰電池儲能電站防火規(guī)范
- 經(jīng)尿道膀胱腫瘤電切術(shù)護(hù)理
- 2025內(nèi)蒙古森工集團(tuán)招聘工勤技能人員3100人筆試參考題庫附帶答案詳解析集合
- 登銷記以及運(yùn)統(tǒng)46系統(tǒng)運(yùn)用21課件
- 事務(wù)所合同管理制度
評論
0/150
提交評論