VB二级.docx
- 文档编号:5025720
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:48
- 大小:31.29KB
VB二级.docx
《VB二级.docx》由会员分享,可在线阅读,更多相关《VB二级.docx(48页珍藏版)》请在冰豆网上搜索。
VB二级
[题1]aboveave过程是产生30个1--100之间的随机整数,计算这30个数的平均值然后,找出30个数中数值大于平均值的数据,并统计出这些数据的个数
OptionExplicit
PublicSubaboveave()
Dimx(30)AsInteger
DimsumAsInteger,aveAsInteger'平均值取整数
DimiAsInteger
DimcountAsInteger'在平均值之上的数据个数
Randomize
Fori=1To30
x(i)=Int(Rnd*100)+1
Nexti
sum=0
Fori=1To30
sum=---------1---------
Nexti
ave=--------2---------
'5个一行打印出原始数据,打印平均值
Fori=1To30
Form1.Printx(i);Space
(2);
IfiMod5=0ThenForm1.Print
Nexti
Form1.Print"平均值:
";ave
'找出并5个一行打印在平均值之上的数据,打印统计的个数
Form1.Print"在平均值之上的数据是:
"
Fori=1To30
Ifx(i)>aveThen
---------3---------
Form1.Printx(i);Space
(2);
If------4--------ThenForm1.Print
EndIf
Nexti
Form1.Print
Form1.Print"共有";count;"个在平均值之上."
EndSub
[题2]rn过程通过调用函数isLeapYear判断某年是否是闰年,若是,则打印"今年是润年",否则,打印"今年不是闰年"。
OptionExplicit
PublicSubrn()
Constyear=2023
If----1----Then
Form1.Print"今年是闰年"
Else
Form1.Print"今年不是闰年"
EndIf
EndSub
FunctionisLeapYear(yAsInteger)AsBoolean
If----2----Or(----3----And----4----)Then
isLeapYear=False
Else
isLeapYear=True
EndIf
EndFunction
[题3]ComMulti过程是求任意两个正整数的最小公倍数,求最小公倍数的一种方法是先求出两个数的最大公约数,两个数的乘积除以最大公约数的商即为最小公倍数。
OptionExplicit
PublicSubComMulti()
DimmAsInteger,nAsInteger'任意两个正整数
DimiAsInteger
DimmultiAsInteger'最小公倍数
'输入两个正整数,要求m与n都必须大于零
Do
m=Val(InputBox("m="))
n=Val(InputBox("n="))
LoopWhile------------1----------
multi=---------2-----------
Form1.Printm;"和";n;"的最小公倍数是:
";multi
EndSub
'Div函数过程求任意两个正整数m和n的最大公约数
PublicFunctionDiv(mAsInteger,nAsInteger)AsInteger
'该函数过程用于求任意两个正整数的最大公约数。
DimiAsInteger
'先将两个整数中的较小数假设为最大公约数,再依次往下
'寻找能同时除尽m和n的数即为最大公约数
----------3------------
Ifn Div=n EndIf DoWhilemModDiv<>0OrnModDiv<>0 -----------4---------- Loop EndFunction [题4]find过程是用于从1到10000中找出这样的数,该数各个位的数字的阶乘相加之和等于该数,并将结果输出。 OptionExplicit PublicSubfind() Dimk,a,n,i DimpAsInteger Fork=1To10000 a=LTrim(Str(k)) n=0 Fori=----1----- p=Val(Mid(a,i,1)) n=-----2---- Nexti Ifn=kThenform1.Printk Nextk EndSub Functionfact(xAsInteger)AsLong '该函数用于计算阶乘 DimyAsLong Dimi% y=1 Fori%=1Tox y=y*i% Nexti% ----3---- EndFunction [题5]ComDiv过程是求任意两个正整数的最大公约数。 OptionExplicit PublicSubComDiv() DimmAsInteger,nAsInteger'任意两个正整数 DimiAsInteger DimdivAsInteger'最大公约数 '输入两个正整数,要求m与n都必须大于零 Do m=Val(InputBox("m=")) n=Val(InputBox("n=")) LoopWhile----1---- '先将两个整数中的较小数假设为最大公约数,再依次往下 '寻找能同时除尽m和n的数即为最大公约数 -----2----- Ifn div=n EndIf DoWhilemModdiv<>0OrnModdiv<>0 ----3----- Loop Form1.Printm;"和";n;"的最大公约数是: ";div EndSub [题6]该过程是用于计算e的值并将结果输出,要求精确到0.000000000000001, e的计算公式为: e=1+1/1! +1/2! +…+1/n! 。 OptionExplicit PublicSube() Dimn,term,t n=0: term=1: t=1 Do n=n+1 t=---1--- term=---2----- LoopWhilet>0.000000000000001 form1.print"e="&---3---- EndSub [题7]该过程是用于计算一元二次方程的根,并将结果输出来。 OptionExplicit PublicSubgetanswer() Dimdalt! a#,b#,c# a=InputBox("输入系数a") b=InputBox("输入系数b") c=InputBox("输入系数c") dalt=b*b-4*a*c if----1----then dalt=Sqr(dalt) MsgBoxFormat((-b+dalt)/2/a),"0.00"+Chr(13)+Chr(10)+Format((-b-dalt)/2/a,"0.00") elseif---2----then MsgBoxFormat(-b/2/a,"0.00")+Chr(13)+Chr(10)+Format(-b/2/a,"0.00") Else dalt=---3---- MsgBoxFormat((-b+dalt)/2/a,"0.00")+"+i"+Chr(13)+Chr(10)+Format((-b-dalt)/2/a,"0.00")+"-i" EndIf EndSub [题8]该过程是用于找出被3、5、7除,余数为1的最小的5个整数,并将结果输出来。 OptionExplicit PublicSubfind() DimcountN%,n% countN=0 n=1 Do n=----1---- if-----2----then Form1.Printn countN=countN+1 EndIf Loop----3----- EndSub [题9]p过程是用于整理数组a,使其中小于零的元素移到数组的前端,大于零的元素移到数组的后端,等于零的元素留在数组的中间。 PublicSubp(a%()) Dimi%,low%,high%,t% low=0 i=0 high=UBound(a) doWhile----1---- Ifa(i)<0Then t=a(i) a(i)=a(low) a(low)=t ----2---- i=i+1 ElseIfa(i)>0Then t=a(i) a(i)=a(high) a(high)=t -----3----- Else ----4---- EndIf Loop EndSub [题10]MoveStr过程是把字符数组移动m个位置,当Tag为True左移,则前m个字符移到字符数组尾。 PublicSubMoveStr(a$(),m%,TagAsBoolean) Dimi%,j%,t$ Dimc IfTagThen Fori=1Tom c=a(0) forj=0to----1---- a(j)=a(j+1) Nextj -----2----- Nexti Else Fori=1Tom ------3------ forj=Ubound(A)-----4------ a(j)=a(j-1) Nextj a(0)=c Nexti EndIf EndSub [题11]Modify.bas模块中的Transfer过程用于将一个十六进制整数转换为十进制整数;number函数过程用于将一个十六进制符号转换为数值。 PublicSubTransfer() DimHexAsString'十六进制数 DimDecAsDouble'十进制数 DimtempAsString DimiAsInteger DimnAsInteger Hex=InputBox("输入一个十六进制整数") '******错误1******* n=Val(Hex) i=0 Do '******错误2******* temp=Mid(Hex,i,1) '******错误3******* Dec=Dec+number*16^i i=i+1 LoopWhilei '******错误4****** Form1.Printstr(Hex)&"转换为十进制数为"&str(Dec) EndSub PublicFunctionnumber(strAsString)AsInteger SelectCasestr Case"a","A" number=10 Case"b","B" number=11 Case"c","C" number=12 Case"d","D" number=13 Case"e","E" number=14 Case"f","F" number=15 CaseElse number=Val(str) EndSelect EndFunction [题12]Modify.bas模块中的BubbleSort过程是选择排序法;GenerateData过程产生个[1,20]之间互不相同的随机整数;Swap过程交换两个变量的数值。 PrivateConstn=10 Privatea(1Ton)AsInteger 'BubbleSort过程是排序 'Swap过程交换两个变量数值 'GenerateData过程产生10个[1,20]之间互不相同的随机整数 PublicSubBubbleSort() DimiAsInteger,jAsInteger i=1 Do Forj=i+1Ton Ifa(j)>a(i)Then '*******1********* Swap(a(j),a(i)) EndIf Nextj i=i+1 '*******2******* LoopWhilei=n Form1.Print"排序结果" Fori=1Ton Form1.Printa(i); Nexti EndSub PublicSubGenerateData() DimiAsInteger DimjAsInteger DimbAsBoolean Fori=1Ton b=False DoWhileNotb a(i)=Int(20*Rnd+1) b=True '******3****** Forj=1Toi Ifa(i)=a(j)Then b=False ExitFor EndIf Nextj Loop Form1.Printa(i) Nexti EndSub '********4******** PublicSubSwap(ByValaAsInteger,ByValbAsInteger) DimtempAsInteger temp=a a=b b=temp EndSub [题13]Modify.bas模块中的wrap过程用于判断一个字符串是否“回文”。 所谓“回文”是指字符串顺读与倒读都是一样的,如“潮起潮落,落潮起潮”。 PublicSubWrap() DimlengthAsInteger Dimstr1AsString DimstrleftAsString DimstrrightAsString DimkAsInteger str1=InputBox("请输入任意的字符串")'输入任意字符串 '****错误1***** length=Val(str1) k=1 Do '****错误2***** strleft=Left(str1,k)'从左边起逐个取出一个字符 '****错误3***** strright=Right(str1,k)'从右边起逐个取出一个字符 '****错误4**** Ifstrleft=strrightThen ExitDo EndIf k=k+1 LoopWhilek<=length/2 Ifk>length/2Then Form1.Printstr1&"是回文" Else Form1.Printstr1&"不是回文" EndIf EndSub [题14]Modify.bas模块中的MaxLine过程用于查找一个5行4列的二维数组中行平均值最大的行,并将该行所有数据调整到第一行的位置。 Modify.bas模块中的DataProduce过程用于产生原始数据;Average过程用于计算各行的平均值;PrintArraay过程用于打印二维数组和行平均值。 Dima(1To5,1To4)AsInteger Dimave(1To5)AsInteger PublicSubMaxLine() DimiAsInteger DimjAsInteger DimtempAsInteger DimLine_noAsInteger'最大平均值的行号 '找出最大平均值所在行 Line_no=1 Fori=2To5 '******错误1******* Ifave(Line_no)>=ave(i)Then '******错误2******* Line_no=ave(i) EndIf Nexti '交换第一行与最大平均值所在行 Forj=1To4 temp=a(1,j) '******错误3****** a(Line_no,j)=a(1,j) a(Line_no,j)=temp Nextj '交换对应行的平均值 temp=ave (1) ave (1)=ave(Line_no) ave(Line_no)=temp '打印交换后的数据 Form1.Print"交换后的数据和平均值" PrintArray EndSub PublicSubDataProduce() DimiAsInteger DimjAsInteger '产生5*4数组 Fori=1To5 Forj=1To4 a(i,j)=Int(100*Rnd) Nextj Nexti EndSub PublicSubAverage() DimiAsInteger DimjAsInteger DimsumAsInteger '计算各行平均值 Fori=1To5 sum=0 Forj=1To4 '******错误4****** sum=a(i,j) Nextj ave(i)=sum/4 Nexti '将数组和平均值打印出来 Form1.Print"原始数据和平均值" PrintArray EndSub PublicSubPrintArray() DimiAsInteger DimjAsInteger Fori=1To5 Forj=1To4 Form1.Printa(i,j);Spc(3); Nextj Form1.Print"平均值=";ave(i) Nexti EndSub [题15]Modify.bas模块中的TJ过程是将一批数据中小于零的数及它们的积打印出来,但不完整,请在横线上填入必要的内容,使其完整。 Modify.bas模块中的SCSJ过程是产生数据,数据的取值范围为-10~10之间的随机数。 PrivateConstn=10 Privatea(1Ton)AsInteger 'TJ过程是将一批数据中小于零的数及它们的积打印出来 '数据由SCSJ过程产生,数据的取值范围为-10~10之间的随机整数数 PublicSubTJ() DimiAsInteger DimtAsSingle --------1-------- Fori=1To10 If--------2--------Then t=t*a(i) EndIf Nexti Form1.Print"T=";t EndSub PublicSubSCSJ() Randomize Form1.Print"原始数据" DimiAsInteger DimjAsInteger Fori=1Ton '随机产生0或1,为0时取负,为1时取正 j=Int(Rnd*2) If------3-----ThenJ=-1 a(i)=j*Int(Rnd*(n+1)) Form1.Printa(i); Nexti Form1.Print EndSub [题16]Modify.bas模块中的calculate过程是产生100个[0,99]范围内的随机整数,统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数并打印出来. Publicsubcalculate() Dima(1to100)asinteger Dimx(1to10)asinteger DimIasinteger,pasinteger ‘产生100个[0,99]范围内的随机整数 ‘每行10个打印出来 forI=1to100 ‘**********1********** a(i)=rnd*100 ifa(i)<10then form1.printspace (2);a(i) else form1.printspace (1);a(i); endif ifImod10=0thenform1.print nextI ‘统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数 ‘并将统计结果保存在数组x (1),x (2),……,x(10)中,将统计结果打印出来 forI=1to100 ‘**********2********** p=int(a(i)/10)‘求个位上的数字 ifp=0thenp=10 ‘**********3********** x(p)=x(p)-1 nextI form1.print“统计结果” forI=1to10 p=I ifI=10thenp=0 ‘**********4********** form1.print“个位数为”+str(p)+”共 “+str(x(p))+”个” nextI endsub [题17]Modify
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB 二级