您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 计算机应用/办公自动化 > 30题VB上机练习题答案200806
1(一)不含界面的程序设计题1.编写计算下列函数的程序,结果在窗体上打印出来。自变量x,y的值用InputBox函数输入。其他00,00,062),(yxyxyxyxyxfPrivateSubForm_Click()DimxAsSingle,yAsSingle,fAsSinglex=InputBox(请输入x:)y=InputBox(请输入y:)Ifx0Andy0Thenf=2*x+6*yElseIfx0Andy0Thenf=x-yElsef=0EndIfPrintf=;fEndSub2.从键盘上输入月份的值(即1-12之间的整数),打印出该月份的季节。12月、1月和2月为冬季,3月、4月和5月为春季,其余类推。例如,输入7,则打印出SUMMER。PrivateSubForm_Click()DimxAsIntegerx=InputBox(请输入月份:)SelectCasexCase1,2,12PrintWANTERCase3To5PrintSPINGCase6To8PrintSUMMERCase9To11PrintAUTUMN”EndSelectEndSub3.设sum=11×22×32×…×n2,求sum不大于100000时最大的n。PrivateSubForm_Click()DimnAsInteger,sumAsLong,xAsLongn=02sum=1Whilesum=100000n=n+1x=n*nsum=sum*xWendPrintn=;n-1EndSubn=54.在窗体上输出1900——2010年之间哪些年是闰年,每行5个。闰年判断条件:年份能被4整除但不能被100整除,或者年份能被400整除。PrivateSubForm_Click()DimyearAsInteger,nAsIntegern=0Foryear=1900To2010IfyearMod4=0AndyearMod1000OryearMod400=0ThenPrintyear;n=n+1IfnMod5=0ThenPrintEndIfNextyearEndSub5.换零钱问题。如果要将一元人民币换成零钱(换成1分,2分,5分),共有多少种换法?PrivateSubform_click()DimoneAsInteger'一分硬币个数DimtwoAsInteger'二分硬币个数DimfiveAsInteger'五分硬币个数DimkAsInteger'取法数量k=0Forone=0To100Fortwo=0To503Forfive=0To20Ifone+two*2+five*5=100Thenk=k+1Printone=;one;two=;two;five=;fiveEndIfNextfive,two,onePrintk=;kEndSubOne=0two=0five=20One=0two=5five=18One=0two=10five=16One=0two=15five=14One=0two=20five=12One=0two=25five=10…………k=5416.从键盘输入一行字符,分别统计出其中字母、数字和其他字符的个数;PrivateSubForm_Click()DimStrAsString,chAsString,nAsInteger,iAsIntegerDimaAsInteger,bAsInteger,cAsIntegerStr=InputBox(“输入一行字符”)n=Len(Str)a=0:b=0:c=0Fori=1Tonch=Mid(Str,i,1)Ifch=AAndch=ZOrch=aAndch=zThena=a+1ElseIfch=0Andch=9Then、b=b+1Elsec=c+1EndIfNextiPrint字母的个数:;aPrint数字的个数:;bPrint其他字符的个数:;cEndSub或:PrivateSubForm_Click()DimStrAsString,chAsString,nAsInteger,iAsIntegerDimaAsInteger,bAsInteger,cAsIntegerStr=InputBox(输入一行字符)n=Len(Str)4Fori=1Tonch=Mid(Str,i,1)SelectCasechCaseAToZ,aToza=a+1Case0To9b=b+1CaseElsec=c+1EndSelectNextiPrint字母的个数:;aPrint数字的个数:;bPrint其他字符的个数:;cEndSub7.设计一个程序,求下式s的值,其中x、n的值用inputbox函数输入。程序要求:先对x值进行检查,是否满足-1x1,若不满足该条件,则重新输入x值。!)1(!4!3!21432nxxxxxsnnPrivateSubForm_Click()DimxAsSingle,sAsSingle,nAsInteger,flagAsIntegerDimiAsInteger,tAsSingle,aAsSingle,bAsSinglex=InputBox(请输入x的值:)DoWhilex=1Orx=-1MsgBox超出范围,重新输入x的值!x=InputBox(请输入x的值:)Loopn=InputBox(请输入一个正整数n)s=0a=1b=1flag=-1Fori=1Tona=a*ib=b*xflag=-flagt=flag*b/as=s+tNextiPrints=;sEndSub5x=0.5,n=10,s=0.39346948.输入x的值,计算)1ln(2xx,其中-1x1。......!7654321!54321!321)1ln(7532xxxxxx直到最后一项的绝对值小于10-5为止。程序要求:先对x值进行检查,是否满足-1x1,若不满足该条件,则重新输入x值。PrivateSubForm_Click()DimiAsInteger,flagAsIntegerDimxAsSingle,aAsSingle,bAsSingle,tAsSingleDimsAsSingleDox=InputBox(输入-1~1的数)LoopWhilex=-1Orx=1s=0a=xb=1t=a/bflag=1i=1WhileAbs(t)=0.00001s=s+ta=a*(2*i-1)*x*xb=b*2*i*2*i*(2*i+1)flag=-flagi=i+1t=flag*a/bWendPrints=;sEndSubx=0.5s=0.4896819.找出所有小于或等于100的自然数对。自然数对是指两个自然数的和与差都是平方数。如16与20的和16+20=36,16与20的差20-16=4都是平方数,则16和20称自然数对。PrivateSubForm_Click()DimxAsInteger,yAsIntegerForx=1To99Fory=x+1To1006IfInt(Sqr(y+x))=Sqr(y+x)AndInt(Sqr(y-x))=Sqr(y-x)ThenPrintx;;yEndIfNexty,xEndSub10.编写程序,打印如下图形,层数n由键盘输入。(10n0)PrivateSubForm_Click()DimiAsInteger,jAsInteger,mAsInteger,nAsIntegerDon=Val(InputBox(n=,输入1-9之间的整数))LoopWhilen=0Orn=10Fori=1TonPrintTab(n-i+1);Forj=1To2*i-1Print*;NextjPrintNextiFori=n-1To1Step-1PrintTab(n-i+1);Forj=1To2*i-1Print*;NextjPrintNextiEndSub11.编程输出下列图案,层数n由键盘输入。(27n0)ABBBCCCCCDDDDDDDPrivateSubForm_Click()DimiAsInteger,jAsInteger,nAsIntegerDo7n=Val(InputBox(n=,输入1-26之间的整数))LoopWhilen=0Orn=27Fori=1TonPrintTab(n-i+1);Forj=1To2*i-1PrintChr(64+i);NextjPrintNextiEndSub12.编写程序,实现矩阵转置,即将一个nⅹm的矩阵的行和列互换。例如:A矩阵及其转置矩阵B分别为:635241654321BA现要求完成如下操作:1)矩阵的行数n和列数m由输入对话框输入;2)矩阵中的元素值由输入对话框输入(或由随机数产生);3)转置以前的矩阵和转置后的矩阵都在窗体上输出。PrivateSubForm_Click()DimiAsInteger,jAsInteger,nAsInteger,mAsIntegern=InputBox(输入行n:)m=InputBox(输入列m:)ReDima(n,m)AsInteger,b(m,n)AsIntegerFori=1TonForj=1Toma(i,j)=Int(Rnd*10)Nextj,iPrint转置前的矩阵Fori=1TonForj=1TomPrinta(i,j);NextjPrintNextiFori=1TonForj=1Tomb(j,i)=a(i,j)Nextj,iPrint转置后的矩阵Fori=1TomForj=1TonPrintb(i,j);8NextjPrintNextiEndSub13.编程说明:在窗体的单击事件中完成:随机产生100个三位正整数,按从大到小的顺序在窗体上输出。每行5个。当其中的数能被3整除时,用红色显示这些数。PrivateSubForm_Click()DimiAsInteger,jAsInteger,nAsInteger,kAsInteger,tempAsIntegerDima(100)AsIntegerRandomizeFori=1To100a(i)=Int(Rnd*900)+100NextiFori=1To99k=iForj=i+1To100Ifa(k)a(j)Thenk=jNextjtemp=a(i):a(i)=a(k):a(k)=tempNextiPrint排序后数据:n=0Fori=1To100Ifa(i)Mod3=0ThenForeColor=vbRed:Printa(i);ElseForeColor=vbBlack:Printa(i);EndIfn=n+1IfnMod5=0ThenPrintNextiEndSub14.随机产生10个任意的两位正整数,放入一数组中,求出它们的最大值、最小值和平均值。在窗体上显示整个数组的原值和结果。PrivateSubForm_Click()Dimmin%,max%,sum%,i%,a(10)AsIntegerRandomizeFori=1To10a(i)=Int(Rnd*90)+10NextiPrint产生的随机数为:Fori=1To10Printa(i);Nexti9Printmin=a(1):max=a(1):sum=a(1)Fori=2To10Ifa(i)maxThenmax=a(i)Ifa(i)minThenmin=a(i)sum=sum+a(i)NextiPrint最大值为PrintmaxPrint最小值为PrintminPrint平均值为Printsum/10EndSub15.在文本框中输入内容,单击窗体后,把文本框中的字符按从小到大排列输出在窗体上。PrivateSubForm_Click()DimnAsInteger,iAsInteger,jAsIntegerDima()AsString*1DimsAsString,tAsString,cAsStrings=Text1.Textn=Len
本文标题:30题VB上机练习题答案200806
链接地址:https://www.777doc.com/doc-5271870 .html