资源简介 课件33张PPT。3.8 选择、循环结构程序的设计考点1考点2考点1选择结构程序的设计选择语句:根据不同的判断结果,选择执行不同的语句。选择语句主要有If语句,在VB中,If语句又分为两种形式,行If语句和块If语句。?1.行If语句行If语句必须在一行内写完。该语句的执行过程是先计算条件表达式的值,如果条件表达式的计算结果是True,就执行Then后面的语句,否则执行Else后面的语句。如果Else和它的后随语句不出现,则条件表达式值为True时执行Then后面的语句,否则就什么也不执行,程序转向IF语句下面的后继语句。行IF语句格式如下:If 条件表达式 Then 语句1 Else 语句2或If 条件表达式 Then 语句考点1考点22.块If语句块If语句的格式如下:If 条件表达式1 Then语句块1ElseIf 条件表达式2 Then语句块2……ElseIf 条件表达式n Then语句块nElse 语句块0End If考点1考点2其中的语句块可以由一个或多个语句组成。如果只有两种不同情形的分别处理,则中间所有的ElseIf部分都不必书写,只保留语句块1和语句块0相应的部分即可,即块If语句可以简化为以下格式:If 条件表达式 Then语句块1Else语句块0End If如果只须处理一种情况,则Else部分也不必书写,即块If语句可以简化为以下格式:If 条件表达式 Then语句块End If考点1考点2当条件表达式为True或False时进行处理的语句都只有一个时,可采用行If语句,也可采用块If语句;而如果分支中进行处理的语句不止一个时,必须采用块If语句。考点1考点2例1目前,世界上普遍采用空气污染指数API确定城市空气质量等级,API的分级标准如下表所示。若变量s已存入了API的值,现根据API值判断空气质量等级,并将等级显示在标签Label1中,下列程序不能正确完成要求的是( )考点1考点2A.if s<=50 thengrade=″优″elseif s<=100 thengrade=″良好″elseif s<=200 thengrade=″轻度污染″elseif s<=300 thengrade=″中度污染″elsegrade=″重度污染″end iflabel1.caption=″等级:″+grade考点1考点2B.if s<=50 thengrade=″优″elseif s<=100 and s>=51 thengrade=″良好″elseif s<=200 and s>=101 thengrade=″轻度污染″elseif s<=300 and s>=201 thengrade=″中度污染″elseif s>300 thengrade=″重度污染″end iflabel1.caption=″等级:″+grade考点1考点2C.if s<=50 then grade=″优″if s<=100 and s>=51 then grade=″良好″if s<=200 and s>=101 then grade=″轻度污染″if s<=300 and s>=201 then grade=″中度污染″if s>300 then grade=″重度污染″label1.caption=″等级:″+gradeD.if s<=50 then grade=″优″if s<=100 and s>=51 then grade=″良好″if s<=200 and s>=101 then grade=″轻度污染″if s<=300 and s>=201 then grade=″中度污染″ else grade=″重度污染″label1.caption=″等级:″+grade答案:D考点1考点2解析:本题是关于选择结构程序的语法结构问题。If语句语法结构主要有行形式和块形式。对于多重判断的块形式If语句,它的语法结构如下:If条件1 Then 语句块1ElseIf条件2 Then 语句块2……ElseIf条件n Then 语句块nElse 语句块0End If考点1考点2其执行过程是当第1个条件满足时,如果该条件成立,执行语句块1,执行语句块1后不再判断其他的条件,直接跳转到End If后面执行后续语句;若第1个条件不满足时,再执行判断第2个条件,如果不成立,再判断第3个条件……如果所有n个条件都不满足,则执行Else后面的语句块0。选项D用了4个独立的If语句,其中第4句的功能是如果API在201~300之间,等级是中度污染,如果不是这个范围,即API<=200或API>=301为重度污染,不合题意。考点1考点2变式有如下VB程序段Private Sub Command1_Click()s=val(text1.text)if s>=62 thengrade=″A″elseif s>=55 thengrade=″B″elseif s>=50 thengrade=″C″elseif s>=43 thengrade=″D″else考点1考点2grade=″E″end iflabel1.caption=″等级:″+gradeEnd Sub运行该程序,在文本框中输入52,单击命令按钮Command1,在标签label1中显示的内容是 。?答案:等级:C解析:本题是关于选择结构程序的变量求值问题。选择结构涉及多种情况判断,在程序的执行过程中将会选择其中符合条件的一路分支执行。题中变量s的值是52,第3个条件判断s>=50的值为True,因此执行语句grade=″C ″,其他分支不再执行,在标签label1中显示的内容是“等级:C”。考点1考点2Do语句格式:Do While 条件表达式语句块LoopDo语句与For语句的运行机制相近,但Do语句更侧重于循环次数未知情况下的程序。考点1考点2例2有如下程序:x=1For i=1 To 5 Step 2x=x*iNext i该程序运行后,变量x的值是( )A.120 B.15 C.5 D.1答案:B解析:本题涉及循环结构程序(For语句)的变量求值问题。For语句中的循环变量的值,会在[初值,终值]的范围内按照步长增加或减少,直至超出终值,循环结束。本题是通过循环体中的“x=x*i”语句,将i的值依次累积到变量x中,下表罗列了程序中各变量在语句执行过程中的变化情况:考点1考点2如果把本题中的步长改为-2,要完成同样功能,则程序可改为:x=1For i=5 To 1 Step-2x=x* iNext i即如果步长为负值,那么初值须大于等于终值,循环变量i的值将依次是5、3、1、-1。考点1考点2变式有如下程序:x=1i=1do while i<=5x=x*ii=i+2loop该程序运行后,变量i的值是 。?答案:7解析:本题涉及循环结构程序(Do语句)的循环变量求值问题。For循环通过Next语句,按照步长改变循环变量的值,直至循环结束。Do语句则需要在其循环体内编写改变循环变量的语句,直至While条件表达式的值为False时,循环结束。程序运行中,各变量变化过程如下表所示:考点1考点2由上表结合程序可知,当语句块进入第3次循环时,执行语句i=i+2后,循环变量x的值将会变为7,从而使条件表达式i<=5的值为False,程序无法进入第4次循环,循环终止。1.有以下VB程序dim x as integer,y as integerx=val(text1.text)if x>=0 theny=x^3elsey=-x^3end iflabel2.caption=str(y)若要测试所有分支程序代码是否正确,下列测试数据中最恰当的一组是( )A.0,10 B.-1,-2 C.-1,0 D.10,100答案:C 2.用VB语句描述:如果x≤10且x>1,则y=x3,否则y=-x3,是( )A.If 1B.If x<=10,x>y Then y=x3 else y=-x3C.If x<=10 and x>1 then y=x^3 else y=-x^3D.If x<=10 or x>1 then y=x^3 else y=-x^3答案:C3.有如下Visual Basic程序段:a=2b=1c=3m=aIf b>a Then m=bIf c>m then m=c该程序段运行后,变量m的值是( )A.1 B.2 C.3 D.0答案:C 解析:程序中两个if语句实现了把a、b、c中的最大数赋值给m的功能。4.下列VB程序段用来判断某数的正负情况:x=val(text1.text)if then?label1.caption=″正数″elselabel1.caption=″负数″end if则程序划线处应填入( )A.x<0 B.x<>0 C.x>0 D.x<=0答案:C5.以下事件处理过程用来判断三边能否组成三角形:Private Sub Command1_Click()a=3b=4c=5if a+b>c and b+c>a and a+c>b then label1.caption=″可以″ else label1.caption=″不行″ end ifEnd Sub运行程序后,单击命令按钮Command1后,结果是( )A.标签label1显示“不行”B.标签label1显示“可以”C.出现“语法错误”的错误信息D.出现“块if没有end if”的错误信息答案:C 解析:行if语句结尾不需要end if。6.某算法的部分程序代码和其相对应的流程图分别表示如下:Private Sub Command1_click( ) dim s as integer,i as integer dim n as integer n=val(text1.text) s=0 for ① ?② ? next i label1.caption=str(s)End Sub则程序①②处应填入的代码是( )A.①i=0 to n step 2 ②s=s+iB.①i=0 to n ②s=s+iC.①i=1 to n step 2 ②s=s+iD.①i=0 to n step 2 ②s=s*i答案:A 解析:由流程图可知,i是循环变量,初值是0,终值是n,步长为2,则1处代码是i=0 to n step 2;每次循环把i的值累加到S中,则2处代码是s=s+i。7.有以下VB程序段:s=0for i=1 to 10 step 3s=s+inext该程序执行后,变量i和s的值分别为( )A.13,22 B.10,22 C.13,35 D.10,35答案:A 解析:for语句步长是3,循环变量i的值依次是1、4、7、10,循环4次,最后i=13,每次循环把i的值累加到s中,所以s=1+4+7+10=22。8.为计算1+3+5+…+99的值,某人编程如下:k=1s=0do while k<=99k=k+2s=s+kloopprint s在调试时发现运行结果有错误,需要修改。下列对于错误原因和修正方案的描述正确的是( )A.do while...loop循环语句错误,应改为For k=1 To 99...Next kB.循环条件错误,应改为k<99C.循环前的赋值语句k=1错误,应改为k=0D.循环中两条赋值语句的顺序错误,应改为s=s+k:k=k+2答案:D9.有以下VB程序段:s=1:i=1do while s<100s=s*ii=i*2loop该程序执行后,变量i和s的值分别为( )A.8,64 B.16,1024 C.32,1024 D.16,64答案:C 解析:程序运行中,各变量变化过程如下表所示:10.有以下VB程序段:s=0for i=10 to step-2?s=s+inext i若要使语句s=s+i执行6次,则循环变量i终值应为 ( )A.0 B.1 C.2 D.-2答案:A11.有如下VB程序s=0:i=1do while ?s=s+ii=i+2loop该程序运行后,变量S的值等于16,则程序划线处的语句是( )A.i<=5 B.i<=7 C.i<7 D.i<=9答案:B 解析:i的变化规律是1、3、5、7、9….,s的值由i累加而得,s=1+3+5+7=16,所以条件是i<=7。12.现要求编写VB程序,编辑界面如图甲所示,运行界面如图乙所示,程序功能如下:在文本框Text1中输入N的值,单击“求和”按钮Command1,完成N以内奇数和的计算,并在文本框Text2中显示计算结果。(1)观察编辑界面和运行界面,发现缺少控件,需要添加的对象为 (填写对象名称)。?(2)请根据题意将下列程序补充完整。Private Sub Command1_Click()Dim n As Integer,s As Integer,i As Integern=Val(Text1.Text)For i=① ?s=s+iNext i② =Str(s)?End Sub答案:(1)Text2 (2)①1 To n Step 2 ②Text2.Text解析:题目要求文本框Text2中显示计算结果,需要添加的对象为Text2,程序最后把求和结果显示在文本框Text2中,所以②处填写Text2.Text。程序中for循环用以计算N以内奇数和,每次循环把i的值累加到s中,所以i的变化规律应该是1、3、5、7…n,所以①处填入1 To n Step 2。 展开更多...... 收起↑ 资源预览