第2节 选择结构
考试内容
考试要求
行IF语句
c
块IF语句
c
选择结构
选择结构也称为分支结构。VB选择语句能使程序在执行过程中,根据不同的判断结果,选择执行不同的处理。
一、行If语句
格式1:
条件成立时执行语句,否则不执行
格式2:
条件成立时执行语句1,否则执行语句2
二、块If语句
格式1:
If 条件表达式 Then
语句块
End If
条件成立时执行语句块,否则不执行
格式2
If 条件表达式 Then
语句块1
Else
语句块2
End If
条件成立时执行语句块1,否则执行语句块2:
格式3:
If 条件表达式1 Then
语句1
ElseIf 条件表达式2 Then
语句2
End If
条件1成立时执行语句1,条件1不成立时才判断条件2,条件2成立执行语句2
格式4:
If 条件表达式1 Then
语句1
ElseIf 条件表达式2 Then
语句2
……
Else
语句0
End If
条件1成立时执行语句1,条件1不成立时才判断条件2,条件2成立执行语句2……以上条件都不成立,则执行语句0
一、行If语句
【典例1】 Dim x As Integer, y As Integer
x = 1: y = 2
If x = y Then x = x + 2 Else y = y + 2
该程序段运行后x,y的值为( )
A.1,2 B.3,2
C.1,4 D.3,4
解析 本题主要考查行If语句。x=1,y=2,不满足If后面的判断表达式,执行Else后面的语句,y=2+2=4,x的值不变。
答案 C
【变式训练】 有如下VB程序段:
Private Sub Command1_Click()
Dim x As Integer, y As Integer
Dim s As String
s = “China”
x = Len(s)
y = Int(Sqr(x))
If x < > y Then x = x + y Else y = x + y
y = x + y
Label1.Caption = Str(y)
End Sub
该程序执行后,标签Label1上显示的内容是( )
A.4 B.5
C.7 D.9
解析 本题主要考查行If语句。x=5,y = 2。If语句条件x < > y成立执行x = x + y 后x值变为7。执行语句y = x + y后y的值为9。
答案 D
【方法总结】 在行If语句中,所有的语句都在同一行。
二、块If语句
【典例2】 有如下VB程序段:
Dim x As String, y As String
x= “Boy-or-Girl?”
y=Len(x)
If y<11 Then
Label1.Caption= “I am ”+Mid(x,1,3)
Else
Label1.Caption= “I am ”+Mid(x,8,4)
End If
该程序段运行之后,标签Label中显示的内容为( )
A.Boy or Girl B. I am Boy
C. I am Girl D. I am Boy or Girl?
解析 本题主要考查块IF语句。因为y=11,因此执行Else后面的语句。
答案 C
【变式训练】 有如下VB程序段:
Private Sub Command1_Click()
Dim ans As Integer, res As Integer
Dim mystr As String
mystr= “Visual”
ans = 2
res = Len(mystr)
If ans > res Then
ans = ans + res
Else
res = ans + res
EndIf
Label1.Caption = Str(res)
End Sub
程序执行后,在标签Label1上显示的内容是( )
A.4 B.5
C.7 D.8
解析 本题主要考查行IF语句。ans=2,res = 3。语句ans > res 不成立,执行res = ans + res后res值变为8。
答案 D
【方法总结】 块If语句中,If和ElseIf后面有判断语句,Else后面没有判断语句。注意块If语句要以End If结束。
1.有如下VB程序:
a = 2: b = 5
If b >= a Then a = a + 2:b = b + 2
Text1.Text = Str(b)
程序运行后文本框Text1显示的内容为______。
解析 本题主要考查行If语句。a = 2,b = 5。满足If后面的判断语句,执行Then后面的语句 a = a + 2=4,b = b + 2=7。
答案 7
2.有如下VB程序:
a = 2: b = 5
If b >= a Then
a = a + 2:b = a + b
End If
b = b * 2
Text1.Text = Str(b)
程序运行后文本框Text1显示的内容为______。
解析 本题主要考查块If语句。a = 2,b = 5。满足If后面的判断语句,执行Then后面的语句 a = a + 2=4,b = a + b=9。再执行b = b * 2=18。
答案 18
3.有如下VB程序:
a = 1: b = 2
If a > 0 Then a = a + 1
a = a + 1
If a < > b Then
a = a + 1
b = b + 1
End If
a = a + b
Label1.Caption = Str(a)
程序运行后标签Label1显示的内容为________。
解析 本题主要考查If语句。a = 1: b = 2,满足行If语句后面的判断语句,执行Then后面的语句a=a+1=2,然后执行a=a+1=3,且满足块If语句后面的判断语句,执行Then后面的语句 a = a + 1=4,b = b + 1=3,最后执行a=a+b=7。
答案 7
4.有如下VB程序:
x = 5: y = 2
If x > y Then
y = y + 6
If y>9 Then y = x*y
Else
y = y + 2
y = x + y
End If
Text1.Text = Str(y)
程序运行后文本框Text1显示的内容为______。
解析 本题主要考查If语句。x = 5: y = 2。满足If后面的判断语句,执行Then后面的语句 y=y+6=8.但不满足y>9,不执行then后面的语句。
答案 8
基础巩固
1.有如下VB程序段:
Dim a As Integer, b As Integer
a = 5: b = 3
If a Mod b = 2 Then a = a ^ 2 Else a = b ^ 2
该程序段运行后a的值为( )
A.3 B.5
C.9 D.25
解析 本题主要考查行If语句。a=5,b=3,满足If后面的判断语句,执行Then后面的语句 a = a ^ 2=25。
答案 D
2.有如下VB程序段:
Private Sub Command1_Click()
Dim a As Integer, b As Integer
a = Len(“abcd”):b = 5
If a >= 0 And b < 5 Then
a = 3 * b + 1
ElseIf a > b Then
a = 3 * b - 1
Else
a = 3 * a + b
End If
Label1.Caption = Str(a)
End Sub
该程序段运行后,y的值为( )
A.0 B.14
C.16 D.17
解析 本题主要考查块IF语句。由于a=4,b=5,条件a >= 0 And b < 5和a > b都不成立,因此执行Else部分的代码a = 3 * a + b=17,答案为D。
答案 D
3.有如下VB程序段:
Dim px As Integer, py As Integer,t As String
t = “2020年”
px = Val(Mid(t, 3, 2))
py = Int(Sqr(px)) + Len(t)
If px > py Then
px = px Mod 2
ElseIf px < py Then
py = py Mod 2
Else
px = 1
End If
px = px + py
Label1.Caption = Str(px)
该程序段运行后标签上显示的内容是( )
A.9 B.10
C.20 D.30
解析 本题主要考查块IF语句。px = Val(Mid(t, 3, 2))=20,py = Int(Sqr(x)) + Len(t)=9。块IF语句第一个条件成立,执行px = px Mod 2后px值变为0,块IF语句结束。执行px = px + py 语句后,px的值变为9。
答案 A
能力提升
4.模拟一个简易计算器,其功能是: 输入两个数和一个运算符(+、-、*、/),进行算术运算,并输出运算结果, 程序设计界面和运行界面分别如图1和图2所示。
图1 图2
在文本框 Text1 中输入第一个数 a,在文本框 Text2 中输入运算符 ch,在文本框 Text3中输入第二个数 b,在文本框 Text4 中输出运算结果。当输入的运算符不是“+、-、*、/”四种运算符时,则输出“运算符不正确”;当进行 “/”运算时,如果除数为0,输出“除数不能为零”。
为实现上述功能,请在①和②划线处,填入合适的代码,把程序补充完整。
Private Sub Command1_Click()
Dim a As Single, b As Single,ch as String
a = Val(Text1.Text)
____①____
b = Val(Text3.Text)
If ch = “+” Then
Text4.Text = Str(a +b)
ElseIf ch = “*” Then
Text4.Text = Str(a*b)
ElseIf ch = “-” Then
Text4.Text = Str(a-b)
ElseIf ch = “/” Then
If ____②____Then Text4.Text = Str(a / b) Else Text4.Text = “除数不能为零”
Else
Text4.Text = “运算符不正确”
End If
End Sub
解析 本题是考查多分支结构。①将文本框Text2中的内容取出并赋值给ch。②行If语句用来判断除数是否为0,不等于0,输出运算结果,否则输出“除数不能为0”,因此,答案为b< >0。
答案 ①ch = Text2.Text ②b< >0
课件13张PPT。第2节 选择结构选择结构也称为分支结构。VB选择语句能使程序在执行过程中,根据不同的判断结果,选择执行不同的处理。选择结构二、块If语句一、行If语句
【典例1】 Dim x As Integer, y As Integerx = 1: y = 2
If x = y Then x = x + 2 Else y = y + 2
该程序段运行后x,y的值为( )
A.1,2 B.3,2
C.1,4 D.3,4
解析 本题主要考查行If语句。x=1,y=2,不满足If后面的判断表达式,执行Else后面的语句,y=2+2=4,x的值不变。
答案 C【变式训练】 有如下VB程序段:Private Sub Command1_Click()
Dim x As Integer, y As Integer
Dim s As String
s = “China”
x = Len(s)
y = Int(Sqr(x))
If x < > y Then x = x + y Else y = x + y
y = x + y
Label1.Caption = Str(y)
End Sub该程序执行后,标签Label1上显示的内容是( )
A.4 B.5
C.7 D.9
解析 本题主要考查行If语句。x=5,y = 2。If语句条件x < > y成立执行x = x + y 后x值变为7。执行语句y = x + y后y的值为9。
答案 D
【方法总结】 在行If语句中,所有的语句都在同一行。二、块If语句
【典例2】 有如下VB程序段:Dim x As String, y As String
x= “Boy-or-Girl?”
y=Len(x)
If y<11 Then
Label1.Caption= “I am ”+Mid(x,1,3)
Else
Label1.Caption= “I am ”+Mid(x,8,4)
End If该程序段运行之后,标签Label中显示的内容为( )
A.Boy or Girl B. I am Boy
C. I am Girl D. I am Boy or Girl?
解析 本题主要考查块IF语句。因为y=11,因此执行Else后面的语句。
答案 C【变式训练】 有如下VB程序段:Private Sub Command1_Click()
Dim ans As Integer, res As Integer
Dim mystr As String
mystr= “Visual”
ans = 2
res = Len(mystr)
If ans > res Then
ans = ans + res
Else res = ans + res
EndIf
Label1.Caption = Str(res)
End Sub程序执行后,在标签Label1上显示的内容是( )
A.4 B.5
C.7 D.8
解析 本题主要考查行IF语句。ans=2,res = 3。语句ans > res 不成立,执行res = ans + res后res值变为8。
答案 D【方法总结】 块If语句中,If和ElseIf后面有判断语句,Else后面没有判断语句。注意块If语句要以End If结束。