习题一、选择题1.设分段函数y(x)的表达式为:y=x+1x0x-1x≤0,则能正确实现该分段函数计算的语句为(D)。A.Ifx0Theny=x+1B.y=x+1y=x-1Ifx=0Theny=x-1C.Ifx0D.Ifx0Theny=x+1y=x+1ElseElsey=x-1y=x-1EndIfEndIf2.有如下程序段:xcase=1t=InputBox(“请输入一个数:”)SelectCasetCaseIs0Y=xcase+1CaseIs=0Y=xcase+2CaseElseY=xcase+3EndSelectPrintxcase;Y若输入-1,输出结果为(A)。A.14B.13C.12D.113.下列循环语句执行后,X的值等于(A)。X=5Fori=1To20Step2X=X+i\5NextiX=iA.21B.22C.23D.244.执行以下程序段时,(C)。x=1DoWhilex0x=x*xPrintx;LoopA.循环体将执行1次B.循环体将执行0次C.循环体将执行无限次D.系统将提示语法错误5.设窗体中包含一个命令按钮Command1,一个标签Label1,并有以下的事件过程。程序运行后,单击Command1按钮,标签中显示的内容是(C)。PrivateSubCommand1_Click()DimiAsInteger,nAsIntegeri=1:n=0DoWhilei10n=n+ii=i*(i+1)LoopLabel1=i&″-″&nEndSubA.6-3B.24-9C.42-9D.6-96.有如下循环结构:Do循环体LoopWhile条件则以下叙述中错误的是(A)。A.若条件是一个为0的常数,则一次也不执行循环体B.条件可以是关系表达式、逻辑表达式或常数C.循环体中可以使用ExitDo语句D.如果条件总是为True,则不停地执行循环体7.在窗体上画一个名称为Command1的命令按钮,然后编写如下事件过程:PrivateSubCommand1_Click()DimnumAsIntegernum=1DoUntilnum6Printnum;num=num+2.4LoopEndSub程序运行后,单击命令按钮,则窗体上显示的内容是(B)。A.13.45.8B.135C.147D.无数据输出8.在窗体上画一个名称为Command1的命令按钮,然后编写如下事件过程:PrivateSubCommand1_Click()DimaAsInteger,sAsIntegera=8s=1Dos=s+aa=a-1LoopWhilea=0Prints;aEndSub程序运行后,单击命令按钮,则窗体上显示的内容是(C)。A.79B.340C.97D.死循环二、填空题1.下面程序的功能是奇偶分别累加。Dimn%,m%PrivateSubText1_KeyPress(KeyAsciiAsInteger)IfKeyAscii=13ThenIfIsNumeric(Text1.Text)ThenSelectCaseText1.TextMod2Case0n=n+Text1.TextCase1m=m+Text1.TextEndSelectEndIfText1.Text=″″Text1.SetFocusEndIfEndSub2.下面的程序是检查输入的算术表达式中圆括号是否配对,并显示相应的结果。本程序在文本框输入表达式,边输入边统计,以回车作为表达式输入结束。DimCount1%PrivateSubText1_KeyPress(KeyAsciiAsInteger)IfChr(KeyAscii)=″(″ThenCount1=Count1+1ElseIfChr(KeyAscii)=″)″ThenCount1=Count1-1EndIfIfKeyAscii=13ThenIfCount1=0ThenPrint″左右括号配对″ElseIfCount10ThenPrint″左括号多于右括号″;Count1;″个″ElsePrint″右括号多于左括号″;-Count1;″个″EndIfEndIfEndSub3.输入任意长度的字符串,要求将字符顺序倒置,例如“ABCDEFG”变换为“GFEDCBA”。PrivateSubCommand1_Click()Dima$,n%,i%,c$a=InputBox(″输入字符串″)n=Len(a)Fori=1ToInt(n/2)c=Mid(a,i,1)Mid(a,i,1)=Mid(a,n+1-i,1)Mid(a,n+1-i,1)=cNextiPrintaEndSub三、阅读程序,写出程序运行结果1.Dimx$,n%,a%n=20Dowhilen0a=nmod2n=n\2x=Chr(48+a)&xLoopPrintx101002.a$=″*″:b$=″$″Fori=1to4IfiMod2=0Thenx$=String(Len(a$)+i,b$)Elsex$=String(Len(a$)+i,a$)EndIfPrintx$;Nexti**$$$****$$$$$3.Fori=1To9Forj=1To2*i-1IfiMod2=0ThenPrintStr$(i);ElsePrintcStr$(i);NextjPrintNexti1222333334444444555555555666666666667777777777777888888888888888999999999999999994.Dima%,i%,j%a=0Fori=1to5Forj=-2to2a=a+i+jNextjPrinta;NextiPrintPrinti,j,a5153050756375四、程序设计题1.设计一个窗体,输入一个3位整数,将它反向输出。例如输入123,输出为321。‘ValStrReverseCStr'采用函数PrivateSubCommand1_Click()Dima$,b$a=InputBox(输入一个3位整数)b=StrReverse(a)Me.FontSize=18PrintbEndSub'采用循环PrivateSubCommand1_Click()Dima$,b$,i%a=InputBox(输入一个3位整数)Fori=1To3b=Mid(a,i,1)+bNextFontSize=18PrintbEndSub2.从键盘输入任意一个实数,用Print方法在窗体上同一行显示其平方和平方根,要求每个数保留3位小数。‘formatSqr^PrivateSubCommand1_Click()DimaAsSingle,bAsSingle,c!a=Val(InputBox(请输入一个实数))b=a^2c=Sqr(a)FontSize=20Printa&的平方为:&Format(b,#.000)Printa;的平方根为:;Format(c,#.000)EndSub3.计算下列分段函数值:y=x2+x2+52x-5≤x533x5≤x10lnx10≤x≤15sin2x+cosx15x或x-5‘If语句/SelectCase语句PrivateSubForm_Click()DimxAsDouble,y#x=Val(InputBox(请输入一个数))Ifx-5Theny=Sin(x)^2+Cos(x)ElseIfx5Theny=x/2+(x*x+5)/2*xElseIfx10Theny=(3*x)^(1/3)ElseIfx=15Theny=Log(x)Elsey=Sin(x)^2+Cos(x)EndIfFontSize=20Printy=;yEndSub4.某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用Price来表示):price200没有折扣200≤price5003%折扣500≤price10005%折扣1000≤price25008%折扣2500≤price500010%折扣5000≤price14%折扣求所售商品的实际销售价格。‘If语句/SelectCase语句PrivateSubForm_Click()DimPriceAsSingle,nAsSinglePrice=Val(InputBox(请输入商品价格))SelectCasePriceCaseIs200n=PriceCaseIs500n=Price*(1-0.03)CaseIs1000n=Price*(1-0.05)CaseIs2500n=Price*(1-0.08)CaseIs5000n=Price*(1-0.1)CaseElsen=Price*(1-0.14)EndSelectFontSize=18Me.AutoRedraw=TruePrint价格为&Price&的商品,打折后实际价格为;nEndSub5.产生50个1~100之间的随机整数,显示所有小于60的数。‘For语句+Rnd+If语句+MsgBoxOptionExplicitPrivateSubForm_Click()DimnAsInteger,mAsInteger,kAsIntegerFontSize=18RandomizeClsForn=1To50m=Int(100*Rnd+1)Ifm60ThenPrintm,k=k+1IfkMod5=0Then'控制每行打印的数字个数PrintEndIfEndIfNextEndSub6.由键盘输入一个正整数,找出大于或等于该数的第一个素数。PrivateSubCommand1_Click()DimnAsInteger,iAsInteger,mAsInteger,kAsIntegern=Val(InputBox(请输入一个正整数:,提示))k=nDoi=2m=Sqr(k)DoWhilei=mAndkModi0i=i+1LoopIfimThenMsgBox大于或等于&n&的第一个素数是:&k:ExitDok=k+1LoopEndSub‘另,……OptionExplicitPrivateSubForm_Click()DimnAsInteger,mAsInteger,iAsInteger,bAsBooleann=Val(InputBox(请输入一个正整数:,提示))m=nDoi=2DoWhilemModi0Andimi=i+1Ifi=mThenb=TrueExitDoEndIfLoopm=m+1LoopUntilbFontSize=18Me.AutoRedraw=TruePrint大于或等于;n;的第一个素数为:;m-1EndSub7.设s=1+12+13+…+1n,求与8最接近的s的值及与之对应的n值。PrivateSubCommand1_Click()Dims#,n%,m#Dom=sn=n+1s=s+1#/nLoopWhiles=8If8-ms-8Thens=m:n=n-1MsgBox与8最接近的s的值为:&s&vbCrLf&相对应的n的值为:&nEndSub或PrivateSubCommand1_Click()Dims,n&,mm=CDec(m)s=CDec(s)Dom=sn=n+1s=s+1/nLoopWhiles=8If8-ms-8Thens=m:n=n-1MsgBox与8最接近的s的值为:&s&vbCrLf&相对应的n的值为:&nEndSub8.计算不定方程x2+y2=10000x≤y共有多少组自然数解。PrivateSubCommand1_Click()Dimx%,y%,n%‘x=1:y=1Fory=0To100‘99Whilex=yIfx^2+y*y=10000Thenn=n+1x=x+1Wend‘x=1x=0NextyMsgBox不定方程共有&n&组自然数解EndSub