您好,欢迎访问三七文档
1/19上机操作练习题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=False2/19DoIfa(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-1Ifma(i)ThenExitForNextiFork=nToi+1Step-1a(k)=a(k-1)Nextka(k)=mFori=1TonPrinta(i);NextiPrintEndSub4.6个评委为4位歌手打分,分数介于1-100之间。去掉一个最高分,一个最低分,求出每位选手的最后得分。将4位歌手得分从高到低排列输出,同时输出该选手的编号。如:歌手395分歌手187分歌手480分歌手270分3/19OptionBase1PrivateTypegeshouxuhaoAsStringfenshu(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).scoresinger(j).scoreThenp=singer(i):singer(i)=singer(j):singer(j)=pEndIfNext4/19NextFori=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)5/19b=InputBox(请输入b)c=InputBox(请输入c)s=b^2-4*a*cIfs0ThenMsgBox(方程无解)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&vbCrLfNext6/19List1.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.TextIfmnThent=m:m=n:n=tEndIfr=mModnWhiler0m=n:n=r:r=mModnWend7/19PrintIfm0Orn0Thenx=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,eAsInteger8/19n=InputBox(请输入一个数:)ReDima(n,n)e=80Fori=1Tone=e-5:g=eForj=1TonIfjiThena(i,j)=0ElseIfi=j
本文标题:VB上机试题及答案
链接地址:https://www.777doc.com/doc-5636940 .html