第1页共22页1578650981864VB复习专题第7章班级______________姓名______________________座号_____[要求]1.掌握选择结构语法;其运行流程,相关程序阅读;编程应用。2.掌握几个循环结构For-Next,ForEach–Next,While-Wend,DoWhile-Loop,DoUntil-Loop,Do-LoopWhile,Do-LoopUntil,Do-Loop的语法结构,其运行流程,一重循环编程;二重循环程序阅读分析;二重循环程序分析填空。[练习]一、基础练习1.VB程序基本控制结构有:___________________________________2.熟悉单行的和块结构的If-Then结构和流程。请写出结构。然后回答问题。(1)单行的If-Then(2)块结构的If-Then(3)请回答问题。X=7Ifx9ThenY=1ElseIfx7Then‘该行的Else隐含什么意思?____________Y=2Eleseifx2Then‘该行的Else隐含什么意思?_____________Y=3‘当x具有什么取值范围时,执行y=3?Else‘该行的Else隐含什么意思?_____________Y=4EndIfPrint“y=”;y‘打印结果是__________________3.熟悉多分支语句.。请写出selece-case结构。然后回答问题。(1)测试表达式可以是哪些类型的表达式?(2)case表达式表其中的表达式可以有哪些形式?(3)阅读下列程序代码,并回答问题X=Cint(InputBox(“输入x的值”))SelectCasexCaseIs1Y=1CaseIs5,6,7Y=2CaseIs10,13to15Y=3CaseelseY=4EndselectPrinty①运行后,在弹出的输入框中先后输入0.35,2,6.7,9.1,12,15.5打印结果分别是什么?②如果把CaseIs1改为CaseIs=1,同样分别输入上述数值,打印结果分别是什么?4.熟悉For-Next结构,然后完成下列练习。For循环变量=初值TO终值STEP步长[循环体][ExitFor]Next[循环变量](1)你要非常熟悉这个结构的运行流程。(2)当步长_______时,为递增循环,循环条件为_______________________(3)当步长=0时,为_______________循环。(4)当步长_______时,为递减循环,循环条件为_______________________(5)Next[循环变量]隐含语句是___________________________(6)对于规则一重循环,循环次数计算公式____________________________(7)对于规则二重循环,循环次数计算公式____________________________(8)EixtFor起到什么作用?______________________第2页共22页1578650981864(9)下列程序段打印结果?①M=7Form=1to10Step-2PrintMNextmPrintM②S=0Form=1to100Step2S=S+mIfS10ThenExitForNextmPrintS,M③S=0Form=1to100M=M*(M+3)S=S+1NextmPrintM,S④S=50Form=5To0Step-1S=S+mNextmPrintm,s⑤S=30Form=100to1Step10S=s*MNextmPrintm,s5.请写出ForEach–Next循环结构,要求掌握其运算流程。编程:已有一个数组p,其各元素中存放的是数值,请用这个循环结构把数组P各元素值累加并输出。6.请分别写出DoWhile-Loop,DoUntil-Loop,Do-LoopWhile,Do-LoopUntil等循环结构。要求掌握其运算流程。回答下列问题:(1)dowhile后的条件式的值为__________时,循环进行,否则循环结束。DoUntil后的条件式的值为_________时,循环进行,否则循环结束。(2)中途退出DO-LOOP这类循环的语句是:_______________________(3)哪些循环结构无论如何至少执行一次循环体?___________________________________7.根据要求补充完整。PrivateSubCommand1_Click(IndexasInteger)selectcaseindexcase1form1.caption=1case2form1.caption=2______________'加入一条语句,使得index不为1,2时,______________'form1的caption为other,endselectEndSub8.i=1:dowhilei10:i=i+1:loop将上述语句改为使用DoUntil-Loop实现_________________________________________改为使用for循环实现_________________________________________________________改为使用While-Wend循环实现__________________________________________________其中在For循环中中途跳出用________语句实现。在do循环中中途跳出用_______语句实现。9.请阅读下列二重循环程序段。按要求修改。Form=1to50Step2S=100Forn=0to-30Step-5S=S+nNextnPrintSNextm(1)把上述程序段完全改成用DoWhile-Loop编写如下:第3页共22页1578650981864(2)把上述程序段完全改成用DoUntil-Loop编写如下:10描述X是小于100的非负整数的VisualBasic表达式是_________________11在窗体上有一个名称为Command1的命令按钮和一个名称为Text1的文本框。程序运行后,Command1为禁用(灰色),此时如果在文本框中输入字符,则命令按钮Command1变为可用。请填空。PrivateSubForm_Load()Command1.Enabled=FalseEndSubPrivateSubText1_【7】()Command1.Enabled=TrueEndSub12.下列程序段功能是计算数学函数0)(x10)(x00)(x1y,输入x,要求输出y的值。[算法一]PrivateSubCommand1_Click()DimxasSingle_________________________X=____________________________If____________Then________________If____________Theny=0If____________Theny=-1Print“x=”;x,“y=”;yEndSub[算法二]PrivateSubCommand1_Click()DimxasSingleDimyasIntegerX=Val(InputBox(“请输入x的值”))If______________ThenY=-1______________________ThenY=0ElseY=1EndIfPrint“x=”;x,“y=”;yEndSub13.从输入的3个整数a,b,c中找出最大者并输出。PrivateSubCommand1_Click()A=InputBox(“请输入第1个整数”)B=InputBox(“请输入第2个整数”)C=InputBox(“请输入第3个整数”)___________________________________If_______________________ThenMax%=B__________________________Max%=CElseMax%=A________________Print“三个整数中最大值是”;max%EndSub13.输入3个整数a,b,c,按降序排列并打印出来。PrivateSubCommand1_Click()DimaasLong,basLong,CasLong,tasLongA=Val(InputBox(“请输入第1个整数”))B=Val(InputBox(“请输入第2个整数”))C=Val(InputBox(“请输入第3个整数”))If_________________ThenT=a:a=b:_____________ElseIfACThen_______________________EndIfIf__________________ThenT=b:b=c:c=tPrint“三个整数降序排列为:”;a,b,cEndSub第4页共22页157865098186414.输入学生成绩,把成绩([0,100]之间且为整数)转换为成绩等级。90=成绩=100为优秀,80=成绩90为良好,60=成绩80为及格,0=成绩60为补考。[算法一]PrivateSubCommand1_Click()DimcjasInteger,djasStringCj=_____________________________________________If____________________ThenPrint“输入的成绩超出范围[0,100],结束应用程序”___________________ElseIf________________ThenDj=“补考”ElseIf______________ThenDj=”及格”ElseIf___________ThenDj=__________________ElseIf________________ThenDj=“优秀”_____________________Print“成绩=”;cj,“等级为”;djEndSub[算法二]PrivateSubCommand1_Click()DimcjasInteger,djasStringCj=_____________________________________________If_________________ThenPrint“成绩超出范围[0,100],退出过程”___________________EndIfSelectCase_____________________________Case9,10Dj=“优秀”Case________________Dj=“良好”Case6to7Dj=“及格”Case__________________Dj=“补考”EndSelectPrint“成绩=”;cj,“等级为”;djEndSub15.已知如下为求ax2+bx+c=0方程根的程序,请将其中的空补全,完成题目要求PrivateSubForm_Click()Dima%,b%,c%,d!Dimx1,x2Dimp,q,ra=val(InputBox(请输入a的值))b=val(InputBox(______________))c=val(InputBox(请输入c的值))d=___________________p=-b/(2*a)Ifd0Thenr=Sqr(d)/(2*a)x1=p+rx2=p-rPrintx1=;x1,x2=;x2Endif_______________x1=px2=p_____________________EndIfIf__________q=Sqr(-d)/(2*a)Printx1=;p;+;q;i,x2=;p;-;q;i_______________EndSub16.下列程序的功能是:当x50时,y=0.8×x;当50≤x≤100时,y=0.7×x;当x1