内容正文:
内蒙古自治区(计算机类)对口招生
《Visual Basic程序设计》复习讲义
模块 4 选择结构程序设计
考点 9 选择结构程序设计
【考纲要求】
1. 掌握条件表达式;
2. 掌握简单条件选择结构的程序设计;
3. 掌握多分支条件选择结构的程序设计。
【知识网络】
【知识和技能要点】
一、条件表达式
1. 条件表达式的三种形式与真假判断
选择结构的作用,就是看指定的条件是否得到满足,再从给定的多组操作中选出一种来执行。条件只有真与假两种结果,If 语句中的条件可以写成关系表达式,也可以写成布尔表达式,还可以直接写一个数值表达式。当条件是数值表达式时,非 0 表示真、0 表示假,这一点与关系表达式和布尔表达式的取值方式不同。
二、简单条件选择结构的程序设计
1. 单行 If…Then 语句
单行 If 语句把判断与要执行的操作写在同一行上:先写关键字 If 与条件,接着写关键字 Then 与条件成立时要执行的语句组;如果还需要处理条件不成立的情形,就在其后写上关键字 Else 与另一个语句组。条件成立时执行前一组语句,不成立时执行后一组语句。Else 部分是可有可无的,省略它时条件不成立就什么也不做,直接执行这一行的下一条语句。
2. 多行 If…Then 语句
如果每个分支要执行的语句不止一条,或者判断较为复杂,就应当改用多行 If 语句。它把条件写在关键字 If 之后,Then 之后换行书写第一组语句;需要处理条件不成立的情形时,另起一行写关键字 Else 与第二组语句;整条语句以 End If 结束。执行时先判断条件,条件为真执行第一组语句,否则执行第二组语句。
3. If 语句的嵌套
在一个 If 语句的语句组里再写一个完整的 If 语句,就构成了 If 语句的嵌套,用来处理需要连续判断的场合。例如判断征兵是否合格时,先按性别分成两支,再在每一支里按年龄与身高作进一步判断。书写嵌套结构时,每一层都要有与之配对的 End If,并把内层语句适当缩进,以便看清层次关系。
4. ElseIf 子句与判断次序
用 ElseIf 子句可以在一条 If 语句里安排多个分支:先判断第一个条件,不成立时再判断 ElseIf 给出的第二个条件,依次类推,最后可以用一个 Else 子句兜底。需要注意的是,程序执行完某一个语句组后就会跳出整条语句,其余的 ElseIf 子句都不再检查;当多个条件同时成立时,也只执行第一个成立的那个子句。因此各个判断条件的前后次序必须仔细安排。
三、多分支条件选择结构的程序设计
1. Select Case 语句的格式与执行过程
当分支层次比较多时,仍用 If 语句书写会使程序可读性变差、不易维护,这时可以改用 Select Case 语句。它以 Select Case 开头并给出一个测试表达式,下面依次列出若干个 Case 子句及各自要执行的语句组,最后以 End Select 结束。执行时把测试表达式的值与各个 Case 的值逐个比较,与哪一个匹配就执行哪一个 Case 关联的语句组。
2. 表达式列表的三种形式
Case 子句后面表达式的值必须写成常量,并且要与测试表达式的类型一致。这类表达式有三种写法:一是把若干个取值用逗号并列写出,如 Case 1,3,5,7;二是用一个范围表示,两头用关键字 To 连接,如 Case 2 To 8;三是用关键字 Is 加关系运算符表示,如 Case Is<5。三种写法还可以在同一个 Case 子句中组合使用。
3. Case Else 的作用
当测试表达式的值与前面列出的所有 Case 都不匹配时,程序就执行 Case Else 后面的语句组。它并不是必须写的,但实际编程时最好加上,用来说明其余情况应当如何处理,以免因为遗漏了某种测试数据而没有任何反应。例如按年龄划分年龄段时,可以用它来处理超出合理范围的数据。
【真题】
2025年真题|第9题 在立即窗口中执行下面操作后(<CR> 表示回车),显示的结果为( )
A=3<CR>
B=5<CR>
Print A+B>A×B<CR>
A. -1
B. 0
C. False
D. True
【答案】C
【解析】本题考查关系表达式的求值。A 与 B 分别取 3 和 5,先算 A+B 得 8,再算 A×B 得 15,比较 8>15 显然不成立,关系表达式的值为假。在 Visual Basic 中显示为 False,因此选 C。
2025年真题|第15题 执行下面语句后,输出的结果是( )
X=“a”:Y=“b”
Print X < Y
A. a
B. b
C. True
D. False
【答案】C
【解析】本题考查字符串的比较。两个字符串比较大小时,逐个比较对应字符的 ASCII 码,"a" 的 ASCII 码小于 "b",因此 X<Y 成立,表达式的值为真,Print 输出 True。字符串比较的结果只能是 True 或 False,不会是字符串本身。
2024年真题|第126题 If…Then…Else 语句是________语句的特例。
【答案】多行 If(块 If)
【解析】单行 If…Then…Else 语句把条件判断与两组语句写在同一行上,只在语句组较短时使用;多行 If 语句(块 If 语句)用 End If 作为结束标志,可以容纳任意多条语句,书写层次也更清楚。可见单行形式只是块形式的一种简化写法,因此填"多行 If(块 If)"。
2026年真题|填空第126题 分支结构是根据一定的________来决定执行何种操作。
【答案】条件
【解析】选择结构(分支结构)在执行时先对给定的条件作出判断,再根据判断的结果从多组语句中选出一组来执行。条件只有真与假两种结果,因此分支结构也常被称为二支选择结构;条件的取值不同,程序执行的流向也就不同。
2022年真题|程序填空题第126题 在窗体上放置一个名称是 Command1、标题为"计算"的命令按钮,两个文本框 Text1 和 Text2,四个标签 Label1~Label4(标题依次为"操作数1""操作数2""运算结果"和空白),再建立一个含有 4 个单选按钮的控件数组 Option1(标题依次为"+"“-”“*”“/”)。程序运行后,在 Text1 和 Text2 中输入两个数值并选择一个单选按钮,计算结果显示在标签 Label4 中。程序代码如下,请补充完整。
Private Sub Command1_Click()
For i = 0 To 3
If [1]________ = True Then
opt = Option1(i).Caption
End If
Next i
Select Case [2]________
Case "+"
result = Val(Text1.Text) + Val(Text2.Text)
Case "-"
result = Val(Text1.Text) - Val(Text2.Text)
Case "*"
result = Val(Text1.Text) * Val(Text2.Text)
Case "/"
result = Val(Text1.Text) / Val(Text2.Text)
[3]________
[4]________ = result
End Sub
【答案】[1] Option1(i).Value;[2] opt;[3] End Select;[4] Label4.Caption
【解析】循环依次访问控件数组中的四个单选按钮,判断哪一个被选中,单选按钮被选中时其 Value 属性为 True,故 [1] 处填 Option1(i).Value。Select Case 语句要根据所选运算符来决定执行哪一分支,而运算符的符号已由前一段代码存入变量 opt,故 [2] 处填 opt。Select Case 语句要用 End Select 结束,故 [3] 处填 End Select。计算结果要显示在标签 Label4 上,应设置它的 Caption 属性,故 [4] 处填 Label4.Caption。
【练习题】
一、填空题
1. If 语句中的条件可以是关系表达式、布尔表达式,也可以是数值表达式;当条件是数值表达式时,非 0 表示________,0 表示________。
【答案】真;假
【解析】条件只有真与假两种结果。关系表达式与布尔表达式的取值本身就是 True 或 False;若把数值表达式用作条件,则规定非 0 为真、0 为假,因此写成 If x Then 时就表示只要 x 不为 0 条件便成立。
2. 单行 If 语句的一般格式为 If <条件> Then <语句组1> [________ <语句组2>];多行 If 语句则以________结束。
【答案】Else;End If
【解析】单行 If 语句中,方括号里的 Else 与语句组 2 用来处理条件不成立的情形,是可以省略的部分;多行 If 语句把两组语句分别写在不同的行上,并以 End If 作为结束标志,两者写法不同但作用相同。
3. 在多分支 Select Case 语句中,Case 之后的表达式列表必须是________,且要与测试表达式的类型相同;若所有 Case 都不匹配,则执行________后的语句组。
【答案】常量;Case Else
【解析】Case 子句后面表达式的值必须写成常量,不能是变量,并且要与测试表达式的类型一致,否则无法进行比较。当测试表达式的值与所有 Case 都不匹配时,程序转而执行 Case Else 后面的语句组。
4. Case Is<5 表示测试表达式的值________5。
【答案】小于
【解析】Case 子句中的 Is 后面跟关系运算符,用来表示一个开区间方向的条件。Case Is<5 表示只要测试表达式的值小于 5 就与该子句匹配;若要表示一个闭区间,则应改用 To 连接上下限。
5. 在多分支结构中,若多个 Case 子句的条件同时成立,只有________个条件成立的子句会被执行。
【答案】第一
【解析】执行 Select Case 语句时,测试表达式的值会与各个 Case 从上到下逐个比较,一旦匹配就执行该 Case 关联的语句组,随后跳出整条语句,不再检查后面的 Case,因此多个条件同时成立时只有最前面那一个会起作用。
6. 使用 ElseIf 时,要特别注意各个判断条件的________次序。
【答案】前后
【解析】ElseIf 子句是按书写的先后依次判断的,一旦某个条件成立并执行完相应语句,其余子句便不再检查。因此把范围较宽的条件写在前面,就会把后面的条件"遮住",各个判断条件的前后次序必须仔细安排。
7. 若用 Case 子句表示序列 1、3、5、7,应写成 Case ________。
【答案】1,3,5,7
【解析】Case 子句表示一组枚举值时,把各个取值用逗号并列写出,如 Case 1,3,5,7。这种写法与表示范围的 To 写法、表示方向条件的 Is 写法可以组合使用,共同构成表达式列表。
二、单项选择题
1. 单行 If 语句中,当条件为数值表达式时( )
A. 非 0 为真,0 为假
B. 0 为真,非 0 为假
C. 只能是 1 或 0
D. 数值表达式不能作条件
【答案】A
【解析】把数值表达式用作条件时,规定非 0 为真、0 为假,并不要求取值只能是 1 或 0,因此数值表达式同样可以充当条件。例如写成 If x Mod 3 Then 时,只要余数不为 0 条件便成立。
2. 多行 If 语句的结束标志是( )
A. End
B. End If
C. End Sub
D. Next
【答案】B
【解析】多行 If 语句把语句组分行书写,必须以 End If 作为结束标志,用来与开头的 If 配对。End 用于结束程序运行,End Sub 用于结束一个过程,Next 用于结束循环,三者都不能作为多行 If 语句的结束标志。
3. 下列单行 If 语句中,写法正确的是( )
A. If A>=B Then T=A,A=B,B=T
B. If A>=B Then T=A;A=B;B=T
C. If A>=B Then T=A A=B B=T
D. If A>=B Then T=A:A=B:B=T
【答案】D
【解析】在同一行上书写多条语句时,语句之间要用冒号分隔,因此 D 项的写法正确。逗号用于分隔 Print 方法的输出项,分号用于控制输出格式,空格则不能充当语句分隔符,其余三项的写法都不正确。
4. 多分支结构中,用来处理"所有情况都不匹配"的子句是( )
A. Case Else
B. End Select
C. ElseIf
D. Default
【答案】A
【解析】Case Else 子句在测试表达式的值与所有 Case 都不匹配时执行,用来处理其余情况。End Select 是整条语句的结束标志,ElseIf 用于 If 语句的多分支结构,Default 不是 Visual Basic 中的关键字。
5. 下列 Case 子句中,表示"测试表达式的值为负数"的是( )
A. Case <0
B. Case Is<0
C. Case 0 To -1
D. Case -1 To 0
【答案】B
【解析】Case 子句中用关系运算符表示条件时,必须在关系运算符之前写上关键字 Is,因此表示负数应写成 Case Is<0。单独写 Case <0 缺少关键字 Is;而 To 表示的是闭区间,用 To 只能表示某个范围内的取值,无法表示全部负数。
6. 要表达"5 < x < 10"这一条件,正确的写法是( )
A. If 5<x<10 Then
B. If 5<x Or x<10 Then
C. If 5<x And x<10 Then
D. If 5<x Then
【答案】C
【解析】Visual Basic 中的关系运算符只能连接两个值,不能像数学那样连写两个不等号。要表示 x 同时满足大于 5 与小于 10,应当用布尔运算符 And 把两个关系表达式连接起来,写成 If 5<x And x<10 Then。若改用 Or,只要满足其中一个条件即可,范围就不对了。
7. Select Case 语句的结束标志是( )
A. End If
B. End Select
C. Next
D. End Case
【答案】B
【解析】Select Case 语句以 Select Case 开头、以 End Select 结束,两者必须配对。End If 用于结束多行 If 语句,Next 用于结束循环,Visual Basic 中并没有 End Case 这一写法。
8. 在 Select Case 语句中,测试表达式( )
A. 只能是字符串
B. 必须是逻辑值
C. 只能是数值表达式
D. 既可以是字符串也可以是数值表达式
【答案】D
【解析】Select Case 语句中的测试表达式既可以是字符串,也可以是数值表达式,只要各个 Case 子句中的常量与之类型相同即可。例如既可以按运算符符号分支,也可以按成绩数值分段。
9. 关于 ElseIf 的说法,正确的是( )
A. 多个 ElseIf 的条件同时成立时,只执行第一个成立的那个子句
B. 多个 ElseIf 的条件同时成立时会全部执行
C. 执行完一个语句组后还会继续检查后面的 ElseIf
D. ElseIf 之后必须跟 End Select
【答案】A
【解析】ElseIf 子句按书写次序依次判断,某个条件成立并执行完相应语句组之后,整条语句即告结束,其余子句都不再检查。因此当多个条件同时成立时,也只有最前面那个成立的条件会起作用。
10. 执行下列语句段后,变量 a 的值是( )
a = 3
If a > 0 Then
a = a + 1
End If
If a > 1 Then
a = a + 10
End If
If a > 2 Then
a = a + 20
End If
A. 4
B. 14
C. 34
D. 3
【答案】C
【解析】a 的初值为 3。第一句判断 a>0 成立,a 变为 4;第二句判断 a>1 成立,a 加上 10 变为 14;第三句判断 a>2 成立,a 再加上 20 变为 34。三句都是独立的多行 If 语句,都会依次执行,因此最终结果是 34。
11. 执行 Select Case 语句时,测试表达式的值与各 Case 的值逐个比较,若匹配则( )
A. 执行该 Case 及之后所有 Case 的语句组
B. 执行该 Case 关联的语句组后跳出
C. 继续比较其余 Case
D. 结束程序
【答案】B
【解析】测试表达式的值与各个 Case 从上到下逐个比较,一旦与某个 Case 匹配,就执行该 Case 关联的语句组,随后跳出整条 Select Case 语句,不再检查后面的 Case,也不会结束整个程序。
12. 语句 If x>0 Then y=1 Else y=-1 属于( )
A. 多行 If 语句
B. Select Case 语句
C. 循环语句
D. 单行 If 语句
【答案】D
【解析】该语句把条件判断与两组赋值写在同一个行上,属于单行 If 语句。多行 If 语句会把语句组分行书写并以 End If 结束;Select Case 用于多分支选择;循环语句用于重复执行,三者都与该语句的形式不同。
三、程序填空题
1. 下列程序判断文本框中输入的整数能否被 3 整除。请补充完整下列程序代码。
Private Sub Command1_Click()
Dim x As Integer
x = Val(Text1.Text)
If x Mod 3 = [1]________ Then
Print "能被 3 整除"
[2]________
Print "不能被 3 整除"
End [3]________
End Sub
【答案】[1] 0;[2] Else;[3] If
【解析】Mod 是取模运算符,用来求两数相除的余数。一个数能被 3 整除时,它除以 3 的余数为 0,故 [1] 处填 0。当条件不成立时要执行另一组语句,应使用关键字 Else 引出,故 [2] 处填 Else。这一组语句分行书写,属于多行 If 语句,必须以 End If 结束,故 [3] 处填 If。
2. 下列程序根据文本框中输入的成绩输出等级。请补充完整下列程序代码。
Private Sub Command1_Click()
Dim s As Integer
s = Val(Text1.Text)
Select Case [1]________
Case Is >= 90
Print "优秀"
Case [2]________
Print "及格"
Case Else
Print "不及格"
End Select
End Sub
【答案】[1] s;[2] Is >= 60
【解析】Select Case 后面要写测试表达式,成绩存放在变量 s 中,各个 Case 都是按成绩分段判断的,故 [1] 处填 s。第二个分支要处理 60 分到 90 分之间的情况,用关系运算符表示时应加上关键字 Is,故 [2] 处填 Is >= 60;低于 60 分的情况由后面的 Case Else 处理。
原创精品资源学科网独家享有版权,侵权必究
学科网(北京)股份有限公司
$