VB上机试题及答案_第1页
VB上机试题及答案_第2页
VB上机试题及答案_第3页
VB上机试题及答案_第4页
VB上机试题及答案_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

______________________________________________________________________________________________________________精品资料上机操作练习题1.某数组有20个元素,其值为随机产生的两位整数。现要求将前10个元素与后10个元素对换。即第1个元素与第20个元素互换,第2个数与第19个元素互换,…,第10个元素与第11个元素互换。在窗体上输出数组原来各元素的值与对换后各元素的值。OptionexplicitDima(1to20)asinteger,Iasinteger,jasinteger,tasintegerPrivateSubForm_Load()ShowPrint"原始数组是:"RandomizeFori=1To20a(i)=Int(Rnd*90)+10Printa(i);IfiMod10=0ThenPrintNextiPrintPrint"现在数组是:"Fori=1To10j=21-it=a(i):a(i)=a(j):a(j)=tNextiFori=1To20Printa(i);IfiMod10=0ThenPrintNextiEndSub2.从数组中删除一个数。先定义一个一维数组,大小、数组的值自定。从键盘上输入一个数,若这个数在数组当中,就把它删除;若这个数不在数组中,提示“该数不在数组中”注意:1)如果数组中存在多个与该数相同的元素,每一个都能删除;2)能实现多次删除PrivateSubForm_Load()ShowReDima(9)AsIntegerm=1Print"原来数组为:"Fori=0To9a(i)=InputBox("请输入第"&m&"个数:")Printa(i);m=m+1NextiPrintn=InputBox("查找的数是:")i=0:flag=FalseDoIfa(i)=nThenj=i:flag=TrueFork=jToUBound(a)-1a(k)=a(k+1)NextkReDimPreservea(UBound(a)-1)i=i-1EndIfi=i+1LoopWhile(i<=UBound(a))Ifflag=FalseThenMsgBoxn&"不在该数组中"ElsePrint"删除"&n&"后的数组是:"Fori=0ToUBound(a)Printa(i);NextiEndIfEndSub3.数组a中存放着升序排列的数据,使用array赋值,将inputbox输入的新数插入到数组中,插入后数组仍有序。注意:要求利用动态数组,能够实现多次插入PrivateSubForm_Load()Shown=8:ReDima(n)a=Array(5,15,23,52,68,88,90,99)n=n+1:ReDimPreservea(n)m=InputBox("请输入要插入的数据:")Fori=1Ton-1Ifm<a(i)ThenExitForNextiFork=nToi+1Step-1a(k)=a(k-1)Nextka(k)=mFori=1TonPrinta(i);NextiPrintEndSub4.6个评委为4位歌手打分,分数介于1-100之间。去掉一个最高分,一个最低分,求出每位选手的最后得分。将4位歌手得分从高到低排列输出,同时输出该选手的编号。如:歌手395分歌手187分歌手480分歌手270分OptionBase1PrivateTypegeshouxuhaoAsStringfenshu(6)AsIntegerscoreAsIntegerpingjunAsIntegerEndTypeDimsinger(1To4)AsgeshouPrivateSubCommand1_Click()Fori=1To4Forj=1To6singer(i).fenshu(j)=Int(Rnd*100)singer(i).xuhao="歌手"&iNextNextCallpaixuEndSubPrivateSubpaixu()DimpAsgeshouFori=1To4Forj=1To5Fork=jTo6Ifsinger(i).fenshu(j)>singer(i).fenshu(k)Thent=singer(i).fenshu(j)singer(i).fenshu(j)=singer(i).fenshu(k)singer(i).fenshu(k)=tEndIfNextNextNextFori=1To4Forj=2To5singer(i).score=singer(i).score+singer(i).fenshu(j)Nextsinger(i).pingjun=singer(i).score/4NextFori=1To3Forj=iTo4Ifsinger(i).score<singer(j).scoreThenp=singer(i):singer(i)=singer(j):singer(j)=pEndIfNextNextFori=1To4Printsinger(i).xuhao&"得分:"&singer(i).pingjunNextEndSubPrivateSubForm_Load()EndSub10个评委给10个选手打分PrivateSubForm_Load()Shown=UBound(b)Fori=1To10Forj=1To10a(i,j)=Val(InputBox("请第"&j&"位评委给第"&i&"位选手打分:"))NextjNextiFori=1To10max=a(i,1):sum=0min=a(i,1):ave=0Forj=1To10Ifa(i,j)>maxThenmax=a(i,j)Ifa(i,j)<minThenmin=a(i,j)sum=sum+a(i,j)Nextjave=(sum-max-min)/(n-2)b(i)=aveNextiFori=1Ton-1Forj=i+1TonIfb(i)<b(j)Thent=b(i):b(i)=b(j):b(j)=tEndIfNextjNextiPrint"选手的得分由高到低为:"Fori=1To10Printb(i);NextiEndSub5.编写函数求一元二次方程ax2+bx+c=0的解。注意:要求考虑方程有两相等实根、两不等实根和两个虚根的情况。DimaAsSingle,bAsSingle,cAsSingleDimsAsSinglea=InputBox("请输入a")b=InputBox("请输入b")c=InputBox("请输入c")s=b^2-4*a*cIfs<0ThenMsgBox("方程无解")ElseIfs=0ThenPrint-b/2*aElsePrint((-b)+Sqr(s))/2*a&""&((-b)-Sqr(s))/2*aEndIfEndSub6.任意输入一组字符,统计出大写字母多少个,小写字母多少个,数字多少个?要求用过程实现。Calltongji(a,n,m,o)Print"数字:"&n&Chr(13)&"小写:"&m&Chr(13)&"大写:"&oEndSubPrivateSubtongji(aAsString,nAsInteger,mAsInteger,pAsInteger)Fori=1ToLen(a)IfAsc(Mid(a,i,1))>47AndAsc(Mid(a,i,1))<58Thenn=n+1ElseIfAsc(Mid(a,i,1))>96AndAsc(Mid(a,i,1))<123Thenm=m+1ElseIfAsc(Mid(a,i,1))>64AndAsc(Mid(a,i,1))<91Thenp=p+1EndIfNextEndSub7.随机产生一个5*5的矩阵,将主对角线和次对角线元素都置为1,并求出矩阵的四周元素之和,显示在列表框中。OptionBase1PrivateSubForm_Load()Dima(5,5)AsIntegerDimsAsIntegerFori=1To5Forj=1To5Ifi=jOri=6-jThena(i,j)=1Elsea(i,j)=Int(Rnd*1000)EndIfText1.Text=Text1.Text&""&a(i,j)s=s+a(i,j)NextText1.Text=Text1.Text&vbCrLf&vbCrLfNextList1.AddItem(s)EndSub8.编写一个函数,能将字母按下列规律译成密码:A<-->Za<-->zB<-->Yb<-->y即第1个字母与第26个字母互换,第i个字母与第(26-i+1)个字母互换。在文本框中任意输入一个字符串,调用该函数将密码显示在另一个文本框中。PrivateSubCommand1_Click()Dims1AsStrings1=Text1.TextText2.Text=convert(s1)EndSubPrivateFunctionconvert(s1AsString)AsStringFori=1ToLen(s1)IfAsc(Mid(s1,i,1))<91AndAsc(Mid(s1,i,1))>64Thenconvert=convert&Chr(91-Asc(Mid(s1,i,1))+64)ElseIfAsc(Mid(s1,i,1))<123AndAsc(Mid(s1,i,1))>96Thenconvert=convert&Chr(123-Asc(Mid(s1,i,1))+96)EndIfNextEndFunction9.编写2个函数,分别求两个正整数的最大公约数和最小公倍数,用户任意输入两个数,采用函数嵌套调用,该函数将它们在窗体显示。PrivateSubForm_Load()Text1="":Text2=""EndSubPrivateSubText1_KeyPress(KeyAsciiAsInteger)IfKeyAscii=13ThenText2.SetFocusEndSubPrivateSubText2_KeyPress(KeyAsciiAsInteger)DimmAsInteger,nAsInteger,rAsInteger,tAsInteger,xClsIfKeyAscii=13Thenm=Text1.Textn=Text2.TextIfm<nThent=m:m=n:n=tEndIfr=mModnWhiler<>0m=n:n=r:r=mModnWendPrintIfm<0Orn<0Thenx=MsgBox("请输入正数",vbCritical+vbOKCancel)Ifx=vbCancelThenEndElseText1="":Text2=""Text1.SetFocusEndIfElsePrintText1.Text&"和"&Text2.Text&"的最大公约数是:";nEndIfEndIfEndSub10.编写计算阶乘的Function过程,利用ex的下列公式计算e(直到最后一项小于10-6为止)的近似值。ex≈1+x/1!+x2/2!+x3/3!+…+xn/n!

OptionExplicitPrivateSubForm_Load()ShowDimxAsInteger,nAsInteger,sAsDoublex=InputBox("请输入一个数:")n=1:s=1Dos=s+x^n/(jiecheng(n))n=n+1LoopUntilx^n/(jiecheng(n))<10^(-6)PrintsEndSubPublicFunctionjiecheng(nAsInteger)AsDoubleDimiAsInteger,sAsDoubles=1Fori=1Tons=s*iNextijiecheng=sEndFunction11.输入整数N,显示具有N行的杨辉三角形,要求按正三角形的形式在图片框中显示。OptionExplicitPrivateSubForm_Load()WindowState=2ShowDima(),nAsInteger,iAsInteger,jAsInteger,gAsInteger,eAsIntegern=InputBox("请输入一个数:")ReDima(n,n)e=80Fori=1Tone=e-5:g=eForj=1TonIfj>iThena(i,j)=0ElseIfi=jThena(i,j)=1Elsea(i,j)=a(i-1,j)+a(i-1,j-1)EndIfEndIfIfa(i,j)=0ThenExitForElsePicture1.PrintTab(g);a(i,j);g=g+10EndIfNextjPicture1.PrintNextiEndSubPrivateSubPicture1_Click()EndSub12.编写一个过程,输出以下菱形图形:ABBBCCCCCDDDDDDDCCCCCBBBA主程序输入一个奇数(>=3),调用过程在窗体上输入图形。PrivateSubCommand1_Click()DimnAsIntegern=InputBox("")IfnMod2=0Orn<=3ThenMsgBox("错误")ElseCalldraw(n)EndIfEndSubSubdraw(nAsInteger)Fori=1To(n+1)/2s=Chr(64+i)PrintTab(41-i+1);String(2*(i-1)+1,s)Nextc=1Forj=(n-1)/2To1Step(-1)c=c+1s=Chr(64+i-c)PrintTab(41-i+c+1);String(2*(j-1)+1,s)NextEndSub13.编写一个将十进制转换为二进制字符串输出的函数。调用函数计算用户输入一个十进制数,在文本框中输出二进制值。注意:输入数据为负数,应该将符号位输出如-13结果-1101OptionBase1Dima()PrivateFunctionconvert(y)AsStringDimiAsIntegeri=1ReDima(i)x=Abs(y)DoWhilex<>0ReDimPreservea(i)a(i)=xMod2Ifa(i)=1Thenx=(x-1)/2Elsex=x/2EndIfi=i+1LoopReDimPreservea(UBound(a))Ify<0ThenFori=1ToUBound(a)convert=convert&a(i)Nextconvert="-"&convertElseFori=1ToUBound(a)convert=convert&a(i)NextEndIfEndFunctionPrivateSubCommand1_Click()DimyAsIntegerText1.Text=""y=InputBox("请输入十进制数字")Text1.Text=convert(y)EndSubPrivateSubForm_Load()EndSub14.输入一个整数N,产生N个随机数(范围1—10*N),然后采用任何2种算法实现由小到大的排序。将排序前后的数据显示出来。OptionBase1PrivateSubCommand1_Click()Dima()AsInteger,nAsIntegern=InputBox("请输入数列项数")ReDima(n)Fori=1Tona(i)=Int(Rnd*10*n+1)Printa(i);NextPrintReDimPreservea(n)Fori=1Ton-1Forj=i+1TonIfa(i)>a(j)Thent=a(i):a(i)=a(j):a(j)=tEndIfNextNextReDimPreservea(n)Fori=1TonPrinta(i);NextEndSubPrivateSubCommand2_Click()Dima()AsInteger,nAsIntegern=InputBox("请输入数列项数")ReDima(n)Fori=1Tona(i)=Int(Rnd*10*n+1)Printa(i);NextPrintReDimPreservea(n)Fori=1Ton-1Forj=1Ton-iIfa(j)>a(j+1)Thent=a(j):a(j)=a(j+1):a(j+1)=tEndIfNextNextReDimPreservea(n)Fori=1TonPrinta(i);NextEndSubPrivateSubForm_Load()EndSub15.编写程序,在窗体上输出3~100之间的所有素数。要求每行显示4个数。PrivateSubCommand1_Click()DimfAsBoolean,cAsIntegerFori=3To100f=FalseForj=2ToInt(Sqr(i))IfiModj=0Thenf=True:ExitForEndIfNextIff=FalseThenPrinti;c=c+1IfcMod4=0ThenPrintEndIfEndIfNextEndSubPrivateSubForm_Load()EndSub16.把文本框1、文本框2指定的范围内的所有素数添加到列表框中,并选中列表框数据中最后一位是9的所有数据(设定selected属性),把它们的和值输出。PublicaAsIntegerPrivateFunctionfact(n)AsLongIfn=1Thenfact=1ElseIfn=2Thenfact=1Else:fact=fact(n-2)+fact(n-1)EndIfEndFunctionPrivateSubCommand1_Click()n=InputBox("请输入n")Printfact(n)EndSubPrivateFunctions(n)AsLongs1=1:s2=1Fori=1Ton-2s=s1+s2:t=s2:s2=s:s1=tNextEndFunctionPrivateSubCommand2_Click()n=InputBox("请输入n")Prints(n)EndSub17.编写2个函数,分别采用递归法和递推法求斐波纳契数列的第n个月的兔子数,n使用inputbox输入,调用函数的结果在窗体上显示。PrivateSubCommand1_Click()List1.ClearDimiAsIntegerFori=Val(Text1.Text)ToVal(Text2.Text)Ifisprime(i)=TrueThenList1.AddItem(i)c=c+1IfiMod10=9ThenList1.Selected(c-1)=Trues=s+iEndIfEndIfNextPrintsEndSubFunctionisprime(nAsInteger)isprime=TrueFori=2Ton-1IfnModi=0Thenisprime=FalseExitForEndIfNextEndFunction18DimsumAsLongPrivateSubCommand1_Click()DimiAsInteger,jAsInteger,a(40)AsLonga(1)=1a(2)=1Fori=3To40a(i)=a(i-1)+a(i-2)Nextisum=0Forj=1To40sum=sum+a(j)NextjEndSubPrivateSubCommand2_Click()Open"out18.txt"ForOutputAs#1Print#1,"数列1,1,2,3,5,8…的前四十项的之和是:"Print#1,sumClose#1EndSub百钱买百鸡OptionExplicitPrivateSubCommand1_Click()DimaAsInteger,bAsIntegerFora=1To34Forb=1To20If3*a+5*b+(100-a-b)/3=100ThenPrinta;Printb;Print100-a-bEndIfNextbNextaEndSub分钱作业PrivateSubCommand1_Click()DimaAsSingle,bassingle,cassinglea=Text1.Textb=Fix(a/100)Print"100元:";Printbc=a-100*bb=Fix(c/50)Print"50元:";Printbc=c-b*50b=Fix(c/20)Print"20元:";Printbc=c-20*b******************b=Fix(c/0.05)Print"0.05元:";Printbc=c-0.05*bb=Fix((c+0.005)/0.02)Print"0.02元:";Printbc=c-0.02*bb=Fix(c/0.01)Print"0.01元:";PrintbEndSub最大公约数、最小公倍数OptionExplicitPrivateSubCommand1_Click()DimaAsInteger,bAsInteger,cAsInteger,tAsIntegera=InputBox("请输入第一个数:")b=InputBox("请输入第二个数:")Ifa<bThenc=bb=aa=cEndIft=aModbDoWhilet<>0a=bb=tt=aModbLoopIfb=1ThenMsgBox("无最大公约数")ElseMsgBox("最大公约数是:"&b)EndIfEndSubPrivateSubCommand2_Click()DimaAsInteger,bAsInteger,cAsInteger,tAsInteger,mAsInteger,nAsIntegera=InputBox("请输入第一个数:")b=InputBox("请输入第二个数:")Ifa<bThenc=bb=aa=cEndIft=a*bm=aModbDoWhilem<>0a=bb=mm=aModbLoopn=t\bMsgBox("最小公倍数是:"&n)EndSub输出九九表OptionExplicitPrivateSubCommand1_Click()DimaAsInteger,bAsIntegerPrintFora=1To9Forb=1ToaPrintTab(b*9);a&"*"&b;"=";a*b;NextbPrintNextaEndSub排序OptionExplicitOptionBase1Dima(1To10)AsIntegerPrivateSubCommand1_Click()DimiAsInteger,jAsIntegerRandomizeFori=1To10aaa:a(i)=Int(Rnd()*90+10)Forj=1Toi-1Ifa(i)=a(j)ThenGoToaaaEndIfNextjNextiFori=1To10Printa(i);NextiPrintEndSubPrivateSubCommand2_Click()DimiAsInteger,jAsInteger,tAsIntegerFori=1To9Forj=1+iTo10Ifa(i)>a(j)Thent=a(j)a(j)=a(i)a(i)=tEndIfNextjNextiFori=1To10Printa(i);NextiPrintEndSubPrivateSubCommand3_Click()DimiAsInteger,jAsInteger,tAsIntegerFori=1To9Forj=1To10-iIfa(j)>a(j+1)Thent=a(j+1)a(j+1)=a(j)a(j)=tEndIfNextjNextiFori=1To10Printa(i);NextiPrintEndSub求平方根OptionExplicitPrivateSubCommand1_Click()DimaAsDouble,bAsDouble,cAsDouble,iAsDoublea=0c=Text1.Textb=cDoWhileAbs(((a+b)/2)^2-c)>10^(-5)i=(a+b)/2Ifi^2-c>0Thenb=iElseIfi^2-c=0ThenExitDoElsea=iEndIfLoopMsgBox(i)EndSub闰年OptionExp

温馨提示

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

评论

0/150

提交评论