計算機等級考試二級VB常用算法_第1頁
計算機等級考試二級VB常用算法_第2頁
計算機等級考試二級VB常用算法_第3頁
計算機等級考試二級VB常用算法_第4頁
計算機等級考試二級VB常用算法_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、一、字符處理11、算法說明1)加密解密最簡單的加密方法是:將每個字母加一序數(shù),例如5,這時:t g ”A t F , a t f , Bt” G , ” b”t ” D”,” y ” t ” d ” , ” Z”t ” E”,zt e解密是加密的逆操作。界面如下:代碼如下:Word-WRAP: break-word bgColor=#f3f3f3以下是引用片段:Opti onExplicitPrivate Sub Comma nd1_Click()Dim strln put$, Code$, Record$, c As Stri ng* 1Dim i%,len gth%,iAsc%strI n

2、put = Text1.Textlen gth= Len( Trim(strI nput)Code =For i =1Tolen gthc = mid(strI nput, i, 1)Select Case cCase A To ZiAsc =Asc(c)+ 5If iAsc Asc(Z)The niAsc=iAsc -26Code =Code& Chr(iAsc)Case aToziAsc =Asc(c)+ 5If iAsc Asc(z)The niAsc=iAsc -26Code = Code & Chr(iAsc)Case ElseCode = Code & cEnd SelectNex

3、t iText2.Text = CodeEnd SubPrivate Sub Comma nd3_Click()Text1.Text=Text2.Text=Text3.Text=Text1.SetFocusEnd Sub2)統(tǒng)計問題提出統(tǒng)計字符或者數(shù)字出現(xiàn)的次數(shù)。算法說明以字符統(tǒng)計為例,設基本問題如下:請統(tǒng)計一段文本中英文字母在文本中出現(xiàn)的次數(shù)。(不區(qū)分大小寫)女口: I am a student.得到:A:2 d:1 e:1 1:1 m:1 n:1 s:1 t:2 u:1分析:由于不區(qū)分大小寫,因此可定義一個大小為26(下標:0-25)的數(shù)組,每個元素依次記錄A B、C-Z字母出現(xiàn)的次數(shù)。A

4、(0)存放字母a出現(xiàn)的次數(shù)A(1)存放字母b出現(xiàn)的次數(shù)A(2)存放字母c出現(xiàn)的次數(shù)A(3)存放字母d出現(xiàn)的次數(shù)譬如:aabdc代碼如下:以下是引用片段:Opti on ExplicitPrivateSub Comma nd1_Click()Dimi As In teger,j As In tegerDimzimu(25) As In tegerDimallStrAs Stri ngDimaStrAs Stri ngallStr=UCase(Text1.Text)Fori =1 To Len (Text1.Text)aStr=Mid(allStr,i,1)IfaStr=A And aStr =

5、Z Thenzimu(Asc(aStr) -Asc(A)= zimu(Asc(aStr) -Asc(A)+1End IfNext iFor i =0 To 25If zimu(i) 0 The nj = j + 1Text2.Text = Text2.Text & Chr(i + Asc(A)& :& str(zimu(i) &If j Mod 5= 0 Then Text2.Text = Text2.Text & Chr(13)& Chr(10)End IfNext iEnd Sub解題技巧熟練運用字符處理函數(shù),對于一些數(shù)論題,譬如逆序數(shù)等也可將數(shù)字通過CStr函數(shù)轉(zhuǎn)換為字符后,利用字符處理

6、函數(shù)來解題。2、實戰(zhàn)練習1)補充代碼(2003秋二(8)下面程序的功能是統(tǒng)計文件中英文字母(不區(qū)分大小寫)出現(xiàn)的個數(shù)。Word-WRAP: break-word bgColor=#f3f3f3以下是引用片段:Option Base 1Private Sub Comma nd1_Click()Dim alpha(26) As In teger, n As In tegerDim i As In teger,s As StringOpe n c:kav2003readme.txtFor In put As #11Do While Not EOF(11)s= (1)s=UCase(s)If s=A

7、And s=ZThe nn= (2)alpha (n)=alpha( n)+1End IfLoopFor i=1 To 26If alpha(i)0 The nList1.Addltem Chr(i+64) &:&CStr(alpha(i)End IfNext iCloseEnd Sub2)補充代碼(2000秋二(6)F面程序的功能是:統(tǒng)計當前盤當前文件夾中的順序文件data.txt中共有多少個單詞,約定連續(xù)出現(xiàn)的字母定義為一個單詞。以下是引用片段:Opti on ExplicitPrivateSub Form_Click()DimChar() As Stri ng,StAs Stri ng,

8、TemAs Stri ngDimIdx As In teger,JsAs Long,Fle nAsLo ngDimF As Boolean,W AsStri ng*1(1)Flen=LOF(10)St=In put(Fle n,#10)Js=1DoWhile Js 以下是引用片段:Private Sub Comma nd1_Click()Dim n%, i%x =1第七天桃子數(shù)Print 第七天桃子數(shù):1只”For i =6 To 1 Step -1x = (x +1)*2Print 第”& i & ”天桃子數(shù):& x & ”只”Next iEnd Sub窮舉法又稱枚舉法,即將所有可能情況一一

9、測試,判斷是否滿足條件,一般用循環(huán)實現(xiàn)。問題:百元買雞問題。假定小雞每只5角;公雞每只2元;母雞每只3元?,F(xiàn)在有100元,要求買100只雞,編 程列出所有可能的購雞方案。分析:設母雞、公雞、小雞分別 x、y、z只,則有:x+y+z=1003x+2y+0.5z=100程序以下是引用片段:PrivateSubComma nd1_Click()Dim x%,y%,z%For x =:0To100For y =:0To100For z =:0To100If x + y+ z=100 And 3*x+2*y+0.5 *z:=100 ThenPrint x, y, zEnd IfNext zNext yN

10、ext xEnd Sub程序二(優(yōu)化)以下是引用片段:PrivateDim x%,For x =For y =If 3 *Print x,End IfNext yNext xEnd SubSub Comma nd1_Click() y%0 To 330 To 50x +2* y +0.5y, 100- x - y*(100- x-y)=100 Then2)高等數(shù)學 求積分 近似計算積分 代碼如下:s=/ 13(x3+2x+5)dx以下是引用片段:PublicFu nctionf(ByVal x!)被積函數(shù)f = x* (x * x +2)+5End FunctionPublic Fun cti

11、 on trapez(ByVala!, ByVal b!,ByValn%) As Singleb、a分別為積分上下限,n為等分數(shù)Dim sum!,h!,x!h = (b- a) / nsum = (f(a)+ f(b)/2For i = 1 T on- 1x = a + i * h sum = sum + f(x) Next i trapez = sum * h End Function調(diào)用:以下是引用片段:Private Sub Comma nd1_Click()Print trapez(1, 3,30)End Sub數(shù)論綜合題此類題目比較廣泛,必須給以足夠重視。歷年題目有:平方數(shù)、零巧數(shù)、

12、擬互滿數(shù)、回文數(shù)、酉完數(shù)、完數(shù)、幸運數(shù)、逆序數(shù)以 及無暇素數(shù)、超級素數(shù)、因子和等。排序21)補充代碼(2002秋二(10)找出由兩個不同數(shù)字組成的平方數(shù),并將結(jié)果按圖中的格式顯示在列表框Listl 中。Word-WRAP: break-word bgColor=#f3f3f3Opti on ExplicitPrivateSub Comma nd1_Click()DimI As Long,N As LongForI =11 To300(1)IfVerify(N)The n(2)EndIfNextIEndSubPrivateFunctionVerify(3)DimA(0 To 9)As In te

13、ger,DoWhile N 0(4)N =N 10LoopForI =0 To9Js=Js + A(I)NextI(5)EndFunction以下是引用片段:) As Boolea nI As In teger,Js As In teger1)編程題(2004秋上機試卷08)一個正整數(shù)被稱為奇妙平方數(shù),如果此數(shù)的平方與它的逆序數(shù)的平方互為逆序數(shù)。例如,12人2=144, 222=441,12與21 互逆,144 與441 互逆,12 就是奇妙平方數(shù)。找出1-300以內(nèi)所有的奇妙平方數(shù)。1算法說明1) 順序查找逐個元素找,如果有,則記錄位置,然后跳出循環(huán);否則,查找失敗。代碼如下:Word-WR

14、AP: break-word bgColor=#f3f3f3以下是引用片段:Private Sub Search(a(), ByVal Key, Index As In teger)Dim i%For i = LBou nd(a) To UBou nd(a)If a(i) = Key Then 找到,將元素下標保存在index中并結(jié)束查找In dex = iExit SubEnd IfNext iIndex =-1若沒找到,則index值為-1End Sub2) 二分法查找順序查找效率低下,當數(shù)組有序排列時,可以使用二分法查找提高效率。 算法思想:塚嚴圈,comm rr學院代碼如下:以下是引用

15、片段:Private Sub birSearch(a(), ByVai low%, ByVai high%, ByVai Key,in dex%)Dim mid As In tegerIf low highThen 沒有查找到in dexExit=-1SubEndIfmid=(low +high) 2取查找區(qū)間的中點If Key = a(mid)Then 查找到,返回下標in dex=midExitSubElselfKey 以下是引用片段:Opti on ExplicitOptionBase 1PrivateSub Form_click()Dim stu() As String, glass(

16、) As Stri ng, i As In tegerDim n As Integer,name As String, k As IntegerOpe n c:stustu.txtFor In put As #11Do While (1)(2)ReDim Preserve stu(n),glass(n)In put #11,stu( n),glass (n)Loopname = InputBox(輸入欲查找的學生姓名:)Call search( name, stu, k)If k = n The nMsgBox (3)ElseMsgBox 無此人。”End IfClose #11End Sub

17、Private Sub search( nameAs String, stu() As String, k As In teger)Dim i As In tegerFor i =1 To UBou nd(stu)Ifn ame = stu(i) The n(4)End IfNext i(5)End Sub1、算法說明數(shù)組中元素的插入和刪除一般是在已固定序列的數(shù)組中插入或刪除一個元素, 使得插入或刪除操作后的數(shù)組還是有序的?;舅悸罚菏紫纫业讲迦胛恢没蛞獎h除的元素。1)插入J1 以下是引用片段:Private Sub Comma nd1_Click()Dima(10)As In tegerD

18、imi AsIn teger,k As In tegerFori =0 To 9 生成數(shù)組a(i)=i*3+1Printa(i);NextiPrintPrint插入14Fork =0 To 9 查找插入14在數(shù)組中的位置If 14 以下是引用片段:Opti onExplictPrivate Sub Form_Click()Dim A(10) As In teger,i As In teger,J As In tegerOpe n c:Data4.txt For In put As #12Do (1)J=J+1In put #12,A(J)LoopCall In sert(A)For i=1 T

19、o 10Print A(i);Next iPrintClose #12EndSubPrivateSub In sert(A()AsIn teger)Dimi As In teger,PutpAsIn teger,JAs In tegerDimGetp As In teger,NAsIn teger,TemAs In tegerN=UBou nd(A)/2Putp=1Getp=N+1For i=1 To NTem=A(Getp)For J=Getp To Putp +1 Step -1(2)Next JA(Putp)=Tem Getp=Getp+1 Putp= (3) Next iEnd Sub

20、補充代碼下面程序得功能是將無序數(shù)組中相同得數(shù)只保留一個,其余得刪除,并輸出經(jīng)過刪除后的數(shù)組元素,刪除相同數(shù)是通過將該數(shù)組元素后面的元素在數(shù)組內(nèi)依次前移替換前一個元素 的值實現(xiàn)的。數(shù)組各元素的值從文件data.txt中讀取。以下是引用片段:Optio nExplictOptionBase 1PrivateSub Form_Click()DimI AsIn teger,JAsIn teger,KAsIn tegerDimA()AsIn teger,TAsIn teger,MAsIn tegerOpe n c:mydocume nts2000testdata.txtForIn putAs #1Do

21、While (1)I=I+1Redim Preserve A(I)In put#1,A(I)LoopM=1:T= (2)Do WhileMI=M+1Do WhileI以下是引用片段:Option Base 1Private Sub Comma nd1_Click()Dim a(10) As In teger,i As In tegerFor i1 To 10a(i) = Int(Rnd * 10)+1Text1 = Text1 & Str(a(i)Next iCall shaker_sort(a)For i = 1 To 10Text2 = Text2 & Str(a(i)Next iEnd

22、SubPrivate Sub Shaker_sort(k() As Integer)IntegerDim i As Integer,cAs Integer,d AsDim t As Integerc = 1d = (1)DoFor (2) Step-1If k(i=1)k(i) Thent = k(i-1):k(i-1) = k(i):k(i) = tEnd IfNext i(3)For i = c+1 To dIf (4) Thent = k(i-1):k(i-1) = k(i):k(i) = tEnd IfNext id = d-1Loop While (5)End Sub2) 編程題 把

23、文本框輸入的字符串按降序添加到列表框中。工程X該宇符串己經(jīng)存在,諳重新輸入辛Il菇苗ni約數(shù)因子i算法說明1)最大公約數(shù):用輾轉(zhuǎn)相除法求兩自然數(shù)m n的最大公約數(shù)。(1) 首先,對于已知兩數(shù) m n,比較并使得 mn;(2) m除以n得余數(shù)r;(3) 若r=0,則n為求得的最大公約數(shù),算法結(jié)束;否則執(zhí)行步驟(4)m?n n?r 再重復執(zhí)行(2)譬如:10與5分析步驟:m=10 n=5r=m mod n=0所以n(n=5)為最大公約數(shù)24與9分析步驟:Word-WRAP: break-word bgColor=#f3f3f3以下是引用片段:m=24n=9r=m mod n=6r 工0 m=9 n

24、=6r=m mod n=3r 工0 m=6 n=3r=m mod n=0所以n(n=3)為最大公約數(shù) 算法實現(xiàn)循環(huán)實現(xiàn)以下是引用片段:Private Function GCD(ByVal m As Long, ByVai n As Long) As LongDim temp As LongIf m n Then temp = m: m = n: n = tempDim r As LongDor = m Mod nIf r =0 The n Exit Dom = nn = rLoopGCD = nEnd Function遞歸實現(xiàn)以下是引用片段:PrivateFunctionGCD(ByVal m

25、 As Long, ByVai n As Long) As LongDim temp As LongIf m 以下是引用片段:Opti onExplicitPrivate Function gcd( (1) As In tegerDim r As In tegerr = m Mod nIf r =0 The ngcd = nElsem = n: n = rEnd IfEnd FunctionPrivate Sub Comma nd1_Click()Dim n As In teger,p As In tegern = Val(Text1)For p = n -1 To 2 Step -1If (

26、3)The n List1.Addltem pNext pEnd Sub2)編程題生成一個三行八列的二維數(shù)組A(3,8),其中前兩行元素產(chǎn)生的方法是:用初值 X仁26 及公式 Xi+1=(25 XXi+357) Mod 10 24,產(chǎn)生一個數(shù)列:X1、X2、.X16。其中X1X8作為A的第一行元素;X9X16作為A的第二行元素;A的第三行元素值取前兩 行同列元素的最大公約數(shù)。最后按圖示格式顯示在圖片框中。261007956705547371416 5179946317722012627631000781214327811嚴退出tL/t fQa.j獨姐生成進制轉(zhuǎn)化1i算法說明1)十進制正整數(shù) m

27、轉(zhuǎn)換為R(2-16)進制的字符串。思路:將m不斷除r取余數(shù),直到商為 0,將余數(shù)反序即得到結(jié)果。算法實現(xiàn):Word-WRAP: break-word bgColor=#f3f3f3以下是引用片段:PrivateFu nction Tran (ByVaimAsIn teger,ByVal r As In teger) As StringDimStrDtoRAs Strin g,nAsIn tegerDo While m on = m Mod rm = m rIf n 9 The nStrDtoR = Chr(65 + n -10)& StrDtoRElseStrDtoR = n & StrDto

28、REnd IfLoopTran = StrDtoREnd Fun cti on2) R(2-16)進制字符串轉(zhuǎn)換為十進制正整數(shù)。思路:R進制數(shù)每位數(shù)字乘以權值之和即為十進制數(shù)。算法實現(xiàn):以下是引用片段:PrivateFu nctionTran (ByVal s As Stri ng, ByVal r As In teger)As integerDim n As In teger, dec As In tegers = UCase(Trim(s)For i% =1 To Len(s)If Mid(s, i, 1)= AThe nn=Asc(Mid(s,i,1)- Asc(A) +10Elsen=Val(Mid(s,i,1)End Ifdec = dec + n * r A (Le n(s)- i)Next iTran = decEnd Fun cti on解題技巧進

溫馨提示

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

評論

0/150

提交評論