经典算法程序实现15(常见算法)_第1页
经典算法程序实现15(常见算法)_第2页
经典算法程序实现15(常见算法)_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

经典算法程序实现2018(综合练习)班级:_姓名:_1.用随机函数产生100个0,99范围内的随机整数,统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数并打印出来。Public Sub GetTJput()Dim a(1 To 100) As IntegerDim x(1 To 10) As IntegerDim i As Integer, p As Integer产生100个0,99范围内的随机整数For i = 1 To 100a(i) = Int(Rnd * 100)If a(i) 10 ThenLab1.Caption= Lab1.Caption & & Str(a(i)ElseLab1.Caption= Lab1.Caption & Str(a(i)End If每行10个在标签Lab1显示出来If _ Then 字符串常量VbCrLf的作用:换行Lab1.Caption= Lab1.Caption & VbCrLf End IfNext i统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数,并将统计结果保存在数组x(1),x(2),.,x(10)中,将统计结果在标签Lab2显示出来For i = 1 To 100p =_ 求个位上的数字If p = 0 Then p = 10x(p) =_Next iLab2.Caption=统计结果For i = 1 To 10p = iIf i = 10 Then _Lab2.Caption= Lab2.Caption & 个位数为+ _Str(p) + 共 + Str(x(i) + 个Next iEnd Sub2. 哥德巴赫猜想:任意一个大于等于6的偶数都可以分解为两个素数之和。基本思想:n为大于等于6的任一偶数,可分解为n1和n2两个数,分别检查n1和n2是否为素数,如都是,则为一组解。如n1不是素数,就不必再检查n2是否素数。先从n1=3开始,检验n1和n2(n2=N-n1)是否素数。然后使n1+2 再检验n1、n2是否素数, 直到n1=n/2为止。 Prime函数功能:若为素数返回True,不是则返回FalseFunction Prime( m as Integer) As _Dim i As Integer_For i=2 To int(sqr(m)If m Mod i = 0 Then Prime=False: Exit ForNext iEnd Function利用上面的Prime函数,验证哥德巴赫猜想Dim n As Integer,n1 As Integer,n2 As Integern=Val(InputBox(输入大于6的正整数)For n1=3 to n2 step 2n2=n-n1If prime(n1) ThenIf _ thenPrint n & = & n1 & + & n2Exit For 结束循环End ifEnd ifNext n13合并法排序(将两个有序数组A、B合并成另一个有序的数组C,升序)基本思想:1)先在A、B数组中各取第一个元素进行比较,将小的元素放入C数组;2)取小的元素所在数组的下一个元素与另一数组中上次比较后较大的元素比较,重复上述比较过程,直到某个数组被先排完;3)将另一个数组剩余元素抄入C数组,合并排序完成。程序段如下:当A和B数组均未比较完Private Sub Cmd_Click()Dim A(1 To 200) As IntegerDim B(1 To 200) As IntegerDim ia As Integer,ib As IntegerDim na As Integer,nb As IntegerA、B数组数据从外部文件读入,分别存储在A(1)、B(1)开始的元素中,数据个数存储在na、nb中ia=1: ib=1: ic=_Do While _ If A(ia) B(ib) ThenC(ic) = A(ia): ia = ia + 1ElseC(ic) = B(ib): ib = ib + 1End If_LoopA数组中的剩余元素抄入C数组Do While ia = na C(ic) = A(ia)ia = ia + 1: ic = ic + 1LoopB数组中的剩余元素抄入C数组Do While ib 100 then Text1.Text= 找不到: & Str(Key)Else Text1.Text= 找到: & Str(Key) & 位置: Str(p)End Sub5把一个数插到有序数列中,插入后数列仍然有序基本思想:n个有序数(从小到大)存放在数组a(1)a(n)中,要插入的数x。首先确定x插在数组中的位置p;(可由以下语句实现)p=1Do While _ and p=np=p+1Loopa(p)a(n)元素向后顺移一个位置以空出a(p)元素放入x,可由以下语句实现:For i=n To p Step -1_Next ia(p)=x6简单加密和解密加密的思想是:将每个字母C加(或减)一序数K,即用它后的第K个字母代替,变换式公式: c=chr(Asc(c)+k)例如序数k为5,这时 A F, a?f,B?G当加序数后的字母超过Z或z则 c=Chr(Asc(c)+k -26)例如:You are good Dtz fwj ltti解密为加密的逆过程将每个字母C减(或加)一序数K,即 c=chr(Asc(c)-k),例如序数k为5,这时 ZU, zu,YT当加序数后的字母小于A或a则 c=Chr(Asc(c)-k +26)下段程序是加密处理:i = 1: strp = nL = Len(strI)Do While (i = A And strT Asc(Z) Then iA = iA - 26strp = strp + Chr(iA)ElseIf (strT = a And strT = z) TheniA = Asc(strT) + 5If _ Then iA = iA - 26strp = strp + Chr(iA)Elsestrp = strp + strTEnd Ifi = i + 1LoopPrint strp7统计文本单词的个数(1)从文本(字符串)的左边开始,取出一个字符;设逻辑量WT表示所取字符是否是单词内的字符,初值设为False;(2)若所取字符不是“空格”,“逗号”,“分号”或“感叹号”等单词的分隔符,再判断WT是否为True,若WT不为True则表是新单词的开始,让单词数Nw=Nw+1,让WT=True;(3)若所取字符是“空格”,“逗号”,“分号”或“感叹号”等单词的分隔符, 则表示字符不是单词内字符,让WT=False;(4)再依次取下一个字符,重得(2)(3)直到文本结束。下面程序段是字符串strI中包含的单词数Nw = 0: Wt = _nL = Len(strI)For i =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论