




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、字符处理11、算法说明1)加密解密最简单的加密方法是:将每个字母加一序数,例如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)统计问题提出统计字符或者数字出现的次数。算法说明以字符统计为例,设基本问题如下:请统计一段文本中英文字母在文本中出现的次数。(不区分大小写)女口: I am a student.得到:A:2 d:1 e:1 1:1 m:1 n:1 s:1 t:2 u:1分析:由于不区分大小写,因此可定义一个大小为26(下标:0-25)的数组,每个元素依次记录A B、C-Z字母出现的次数。A
4、(0)存放字母a出现的次数A(1)存放字母b出现的次数A(2)存放字母c出现的次数A(3)存放字母d出现的次数譬如: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解题技巧熟练运用字符处理函数,对于一些数论题,譬如逆序数等也可将数字通过CStr函数转换为字符后,利用字符处理
6、函数来解题。2、实战练习1)补充代码(2003秋二(8)下面程序的功能是统计文件中英文字母(不区分大小写)出现的个数。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面程序的功能是:统计当前盘当前文件夹中的顺序文件data.txt中共有多少个单词,约定连续出现的字母定义为一个单词。以下是引用片段: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第七天桃子数Print 第七天桃子数:1只”For i =6 To 1 Step -1x = (x +1)*2Print 第”& i & ”天桃子数:& x & ”只”Next iEnd Sub穷举法又称枚举法,即将所有可能情况一一
9、测试,判断是否满足条件,一般用循环实现。问题:百元买鸡问题。假定小鸡每只5角;公鸡每只2元;母鸡每只3元。现在有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程序二(优化)以下是引用片段: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)高等数学 求积分 近似计算积分 代码如下:s=/ 13(x3+2x+5)dx以下是引用片段:PublicFu nctionf(ByVal x!)被积函数f = x* (x * x +2)+5End FunctionPublic Fun cti
11、 on trapez(ByVala!, ByVal b!,ByValn%) As Singleb、a分别为积分上下限,n为等分数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调用:以下是引用片段:Private Sub Comma nd1_Click()Print trapez(1, 3,30)End Sub数论综合题此类题目比较广泛,必须给以足够重视。历年题目有:平方数、零巧数、
12、拟互满数、回文数、酉完数、完数、幸运数、逆序数以 及无暇素数、超级素数、因子和等。排序21)补充代码(2002秋二(10)找出由两个不同数字组成的平方数,并将结果按图中的格式显示在列表框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)一个正整数被称为奇妙平方数,如果此数的平方与它的逆序数的平方互为逆序数。例如,12人2=144, 222=441,12与21 互逆,144 与441 互逆,12 就是奇妙平方数。找出1-300以内所有的奇妙平方数。1算法说明1) 顺序查找逐个元素找,如果有,则记录位置,然后跳出循环;否则,查找失败。代码如下: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中并结束查找In dex = iExit SubEnd IfNext iIndex =-1若没找到,则index值为-1End Sub2) 二分法查找顺序查找效率低下,当数组有序排列时,可以使用二分法查找提高效率。 算法思想:塚嚴圈,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取查找区间的中点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、算法说明数组中元素的插入和删除一般是在已固定序列的数组中插入或删除一个元素, 使得插入或删除操作后的数组还是有序的。基本思路:首先要找到插入位置或要删除的元素。1)插入J1 以下是引用片段:Private Sub Comma nd1_Click()Dima(10)As In tegerD
18、imi AsIn teger,k As In tegerFori =0 To 9 生成数组a(i)=i*3+1Printa(i);NextiPrintPrint插入14Fork =0 To 9 查找插入14在数组中的位置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、补充代码下面程序得功能是将无序数组中相同得数只保留一个,其余得删除,并输出经过删除后的数组元素,删除相同数是通过将该数组元素后面的元素在数组内依次前移替换前一个元素 的值实现的。数组各元素的值从文件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该宇符串己经存在,谙重新输入辛Il菇苗ni约数因子i算法说明1)最大公约数:用辗转相除法求两自然数m n的最大公约数。(1) 首先,对于已知两数 m n,比较并使得 mn;(2) m除以n得余数r;(3) 若r=0,则n为求得的最大公约数,算法结束;否则执行步骤(4)m?n n?r 再重复执行(2)譬如:10与5分析步骤:m=10 n=5r=m mod n=0所以n(n=5)为最大公约数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)为最大公约数 算法实现循环实现以下是引用片段: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递归实现以下是引用片段: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)编程题生成一个三行八列的二维数组A(3,8),其中前两行元素产生的方法是:用初值 X仁26 及公式 Xi+1=(25 XXi+357) Mod 10 24,产生一个数列:X1、X2、.X16。其中X1X8作为A的第一行元素;X9X16作为A的第二行元素;A的第三行元素值取前两 行同列元素的最大公约数。最后按图示格式显示在图片框中。261007956705547371416 5179946317722012627631000781214327811严退出tL/t fQa.j独姐生成进制转化1i算法说明1)十进制正整数 m
27、转换为R(2-16)进制的字符串。思路:将m不断除r取余数,直到商为 0,将余数反序即得到结果。算法实现: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)进制字符串转换为十进制正整数。思路:R进制数每位数字乘以权值之和即为十进制数。算法实现:以下是引用片段: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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人力资源管理师备考经验分享试题及答案
- 2024年注会职业生涯规划试题及答案
- 2024年陪诊师考试的学习资源试题及答案
- 注册会计师基础知识清单试题及答案
- 2024年陪诊师考试流程解析试题及答案
- 当代技术趋势试题及答案回顾
- 人力资源管理操作
- 2024基金从业资格考试专家建议及试题答案
- 2024年计算机二级最终备考试题及答案
- 黑龙江省哈尔滨市呼兰区重点中学2025届初三第二次诊断性测试化学试题含解析
- 场地租赁合同(标准版)
- 钢铁项目环评报告 - 15总量控制
- 【魔镜洞察】2024药食同源保健品滋补品行业分析报告
- 《弘扬教育家精神》专题课件
- 2024年新高考II卷高考生物试卷(真题+答案)
- 学校公众号运营事迹材料
- 状元社会参与与公民责任意识的培养
- 台球厅运营方案策划书(2篇)
- 【新零售业态下小米营运资金管理的实例探析13000字(论文)】
- 2024年劳动关系协调员(4级)职业鉴定考试题库(含答案)
- MOOC 机械之美-迷人的工程机械双语-江西理工大学 中国大学慕课答案
评论
0/150
提交评论