二级VB常用算法汇###.docx
- 文档编号:8627795
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:17
- 大小:19.66KB
二级VB常用算法汇###.docx
《二级VB常用算法汇###.docx》由会员分享,可在线阅读,更多相关《二级VB常用算法汇###.docx(17页珍藏版)》请在冰豆网上搜索。
二级VB常用算法汇###
VB常用算法
1.最大公约数
(一)
m=Val(InputBox("请输入一个正整数",,8))
N=Val(InputBox("请输入一个正整数",,6))
w=m*N
Ifm m=N: N=T r=mModN DoWhiler'方法一,前测试型 m=N'考点 N=r'考点 r=mModN'考点 Loop Print"最大公约数是";N'考点 Print"最小公倍数是";w/N'考点 EndSub '最大公约数 (二) m=Val(InputBox("请输入一个正整数",,8)) N=Val(InputBox("请输入一个正整数",,6)) w=m*N Ifm m=N: N=T Do r=mModN'考点 m=N'考点 N=r'考点 LoopWhiler<>0'方法二,后测试型'考点 Print"最大公约数是";m'’'不是n Print"最小公倍数是";w/m EndSub 2.素数的判断(P106方法一),循环变量的值与终值的关系 x=Val(InputBox("请输入一个正整数")) k=Int(Sqr(x)) Fori=2TokStep1 IfxModi=0Then ExitFor EndIf Nexti Ifi>kThen'哪种情况下i>k Printx;"是素数" Else Printx;"不是素数" EndIf EndSub '素数的判断(补充方法二,使用标记变量) DimflagAsBoolean x=Val(InputBox("请输入一个正整数")) k=Int(Sqr(x)) flag=True'判断之前,假设是素数 Fori=2TokStep1 IfxModi=0Then flag=False'发现被整出,立刻改变标记,不是素数 ExitFor EndIf Nexti Ifflag=TrueThen'根据标记的变化判断是否为素数 Printx;"是素数" Else Printx;"不是素数" EndIf EndSub 3.字符图形的输出(字符菱形),其实就是对字符Ascii的操作 '两重循环,外循环控制行数,内循环控制列数 '上下对称的,先打印上半部分;左右对称的,先打印左边部分 DimxAsString Do x=InputBox("请输入一个大写字母") LoopUntilx>="A"Andx<="Z" N=Asc(x)-64'确定行数 Fori=1ToN'上下对称的先打印上半部分 PrintTab(N+1-i);'每行定位 Forj=1Toi'左边 PrintChr(64+j); Nextj Forj=i-1To1Step-1'右边,注意步长为负数 PrintChr(64+j); Nextj Nexti Fori=N-1To1Step-1'下半部分,注意步长 PrintTab(N+1-i);'每行定位 Forj=1Toi'左边 PrintChr(64+j); Nextj Forj=iTo1Step-1'右边,注意步长为负数 PrintChr(64+j); Nextj Nexti EndSub '字符图形的输出(字符等腰三角形)P110 '两重循环,外循环控制行数,内循环控制列数 '其实就是对字符Ascii的操作,注意26,32等数字 C=UCase(InputBox("请输入一个字母")) N=Val(InputBox("请输入行数")) m=Asc(C)-1'Asc(c)-66' Fori=1ToN PrintTab(15-i);'定位 Forj=1To2*i-1 m=m+1 Ifm>90Thenm=m-26'Ifm=26Thenm=0' PrintChr(m);'PrintChr(m+65); Nextj Print'换行 Nexti EndSub 4.冒泡法排序() Dima(10)AsInteger Fori=1To10 a(i)=Int(Rnd*90)+10 List1.AddItema(i) Nexti Fori=1To10'冒泡法排序'考点 Forj=1To10-i'考点 Ifa(j)>a(j+1)Then'考点 T=a(j) a(j)=a(j+1) a(j+1)=T EndIf Nextj,i Fori=1To10 List2.AddItema(i) Nexti EndSub 5.选择法排序 (一) Dima(10)AsInteger Fori=1To10 a(i)=Int(Rnd*90)+10 List1.AddItema(i) Nexti Fori=1To9'选择法排序考点 Forj=i+1To10'考点 Ifa(i)>a(j)Then'考点 T=a(i) a(i)=a(j) a(j)=T EndIf Nextj,i Fori=1To10 List2.AddItema(i) Nexti EndSub '选择法排序 (二) Dima(10)AsInteger Fori=1To10 a(i)=Int(Rnd*90)+10 List1.AddItema(i) Nexti Fori=1To9'选择法排序考点 k=i'考点 Forj=i+1To10'考点 Ifa(k)>a(j)Thenk=j'记下最小值的下标,考点 Nextj Ifi<>kThen'考点 T=a(i) a(i)=a(k) a(k)=T EndIf Nexti Fori=1To10 List2.AddItema(i) Nexti EndSub 6.找最大/最小值 Dima(10)AsInteger Fori=1To10 a(i)=Int(Rnd*90)+10 Printa(i); Nexti Max=a (1)'假如第一个就是最大的 k=1'记下位置 Fori=1To10 IfMax Max=a(i)'改变最大变量的值 k=i'记下位置 EndIf Nexti Print"最大值是: ";Max,"位置是: ";k EndSub 7.顺序查找 (一) '顺序查找P126: 找满足条件的数 '如有重复的,使用标志变量 DimfAsBoolean Dima a=Array(90,20,20,30,25,40,8,-23,20,60) N=UBound(a)'数组A的下标上界 x=Val(InputBox("请输入一个待查找的数: ")) f=False'标志初始化 Fori=1ToN Ifx=a(i)Then Printx,i f=True'找到标志 'ExitFor因为有重复的数,所以不能使用ExitFor EndIf Nexti Iff=FalseThenPrint"没有找到! " EndSub '顺序查找 (二) '顺序查找P126: 找满足条件的数 '没有重复的数,查找结束后以后,根据循环变量与终值的关系判断是否有结果 Dima a=Array(90,20,15,30,25,40,8,-23,10,60) N=UBound(a)'数组A的下标上界 x=Val(InputBox("请输入一个待查找的数: ")) Fori=1ToN Ifx=a(i)Then Printx,i ExitFor'如果有重复的数,去掉该句 EndIf Nexti Ifi>NThenPrint"没有找到! " EndSub 8.二分查找 '折半查找又叫二分查找法 '前提: 所查找的数据事先已经按升序或降序排列好. DimfAsBoolean a=Array(10,20,30,40,50,60,70,80,90,100) Fori=1To10 Printa(i); Nexti Print x=Val(InputBox("输入一个要查找的数",,15)) Tp=10 bt=1 f=False'标志变量 Do Md=Int((bt+Tp)/2)'注意必须是整除! 考点! Ifx=a(Md)Then Print"找到l! 位置是";Md;a(Md)'分号隔开,紧凑格式输出 f=True'改变标志变量的值 ExitDo'找到立即退出循环,优化算法.考点! EndIf
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 VB 常用 算法