1、国家二级 VB机试(控制结构)模拟试卷 8及答案与解析 一、选择题 1 设 X是整型变量,与函数 IIf(x 0, -x, x)有相同结果的代数式是 ( A) |x| ( B) -|x| ( C) x ( D) -x 2 在下面语句或函数中,不能描述选择结构的是 ( A) If语句 ( B) IIf函数 ( C) Select Case语句 ( D) While语句 3 编写如下程序: Private Sub Command1_Click() Dim score As Integer score=86 If score 85 Then r=1 ElseIf score 60Then r=2 E
2、lse r=0 End If Print r End Sub 程序运行后,单击命令按钮 Command1,输出结果为 ( A) 0 ( B) 1 ( C) 2 ( D) 86 4 在窗体上画一命令按钮和一文本框,其名称分别为 Command1和 Text1,然后编写如下程序: Function Fun(x As Integer,y As Integer)As Integer Fun=IIf(x y,x,y)End Function Private Sub Form_Load() Command1.Default=True End Sub Private Sub Command1_Click()
3、 Dim a As Integer,b As Integer a=20:b=12 Text1.Text=Str(Fun(a,b) End Sub 程序运行后,按回车键,文本框中显示的内容为 ( A) 12 ( B) 20 ( C) 24 ( D) 40 5 假定有如下情况语句: Select Case X能表示 |X| 5的 Case子句是 ( A) Case Not(-5To5) ( B) Case5To-5 ( C) Case Is -5,Is 5 ( D) Case Abs(X) 5 6 窗体上有一个名称为 Text1的文本框,一个名称为 Command1的命令按钮。命令按钮的单击事件过
4、程如下: Private Sub Command1_Click() Dim x1 As Integer,x2 As Integer,x3 As Integer s=Trim(Text1.Text) strLen=Len(s) For i=1 To strLen c=Mid(s,i,1) Select Casec Case“0“To“9“ x1=x1+1 Case“A“To“Z“ x2=x2+1 Case“a“To“z“ x3=3+1 Case Else x4=x4+1 End Select Next Print“x1“;x1,“x2“;x2,“x3“;x3,“x4“;x4 End Sub 以下
5、关于上述程序的叙述中,正确的是 ( A) s是去掉文本框中字符串末尾的空格 ( B) Select Casec有误, Case后应该是一个表达式 ( C)各 Case分支条件有误,不能用 To表示字符的取值区间 ( D) x4是字符串中非字母、非数字字符的个数 7 阅读程序: Private Sub Form_Click() a=0 For j=1 To 15 a=a+j Mod 3 Next j Print a End Sub 程序运行后,单击窗体,输出结果是 ( A) 105 ( B) 1 ( C) 120 ( D) 15 8 设有以下程序: Private Sub Form_Click(
6、) x=50 For i=1To4 y=InputBox(“请输入一个整数 “) y=Val(y) If y Mod5=0Then a=a+y x=y Else a=a+x End If Next i Print a End Sub 程序运行后,单击窗体,在输入对话框中依次输入 15、 24、 35、 46,输出结果为 ( A) 100 ( B) 50 ( C) 120 ( D) 70 9 编写如下程序: Private Sub Command1_Click() Dim a(10)As String s=“123456“ n=Len(s) For k=1Ton a(k)=Mid(s,k,1)
7、Next k For i=1Ton2 t=a(i) a(i)=a(n-i+1) a(n-i+1)=t Next i For k=1To n Print a(k); Next k End Sub 程序运行后,单击命令按钮 Command1,输出结果为 ( A) 654321 ( B) 123456 ( C) 654123 ( D) 123654 10 某人编写了如下程序,用来求 10个整数 (整数从键盘输入 )中的最大值: Private Sub Command1_Click() Dim a(10)As Integer,max As Integer For k=1To10 a(k)=InputB
8、ox(“输入一个整数 “) Next k max=0 For k=1To10 If a(k) max Then max=a(k) End If Next k Print max End Sub 运行程序时发现,当输入 10个正数时,可以得到正确结果,但输入 10个负数时结果是错误的,程序需要修改。下面的修改中可以得到正确运行结果的是 ( A)把 Ifa(k) max Then改为 Ifa(k) max Then ( B)把 max=a(k)改为 a(k)=max ( C)把第 2个循环语句 For k=1To10改为 For k=2To10 ( D)把 max=0改为 max=a(10) 11
9、 在窗体上画一个名称为 Text1的文本框和一个名称为 Command1的命令按钮,然后编写如下事件过程: Private Sub Command1_Click() Dim i As Integer,n As Integer For i=0 To 50 i=i+3:n=n+1 If i 10Then Exit For Next Text1.Text=Str(n) End Sub 程序运行后,单击命令按钮,在文本框中显 示的值是 ( A) 2 ( B) 3 ( C) 4 ( D) 5 12 有如下程序: Private Sub Form_Click() Dim i As Integer,n As
10、 Integer For i=1 To 20 i=i+4:n=n+i If i 10 Then Exit For Next Print n End Sub 程序运行后,单击窗体,则输出结果是 ( A) 14 ( B) 15 ( C) 29 ( D) 30 13 在窗体上画一个名称为 Command1的命令按钮,编写如下事件过程: Private Sub Command1_Click() n=0 For i=0 To 10 X=2*i-1 IfX Mod 3=0 Then n=n+1 Next i Print n End Sub 运行程序,单击命令按钮,则窗体上显示的是 ( A) 1 ( B)
11、3 ( C) 5 ( D) 7 14 设 a、 b都是自然数,为求 a除以 b的余数,某人编写了以下函数: Function fun(a As Integer,b As Integer) While a b a=a-b Wend fun=a End Function 在调试时发现函数是错误的。为使函数能产生正确的返回值,应做的修改是 ( A)把 a=a-b改为 a=b-a ( B)把 a=a-b改为 a=ab ( C)把 While a b改为 While a b ( D)把 While a b改为 While a =b 15 以下 Visual Basic不支持的循环结构是 ( A) For
12、.Next ( B) For Each.Next ( C) Do.Loop ( D) Do.End Do 16 编写如下程序: Private Sub Command1_Click() Dim n As Long,s As String n=InputBox(“输入一个数 “) Do While n 0 s=s :Print n Mod 10;:n=n100 Loop Print s End Sub 程序运行后,单击命令按钮 Command1,并输入数值 123456,则输出结果为 ( A) 6 5 4 3 2 1 ( B) 5 6 3 4 1 2 ( C) 6 4 2 5 3 1 ( D)
13、6 1 5 2 4 3 21 编写如下程序: Private Sub Command1_Click() Dim num As Integer,k As Integer,n As Integer num=InputBox(“请输入一个正整数: “) k=num n=2 Do Do While num Mod n=0 Print n;:num=num/n Loop n=n+1 Loop Until n k/2 End Sub 程序运行后,单击命令按钮 Command1,并输入数值 20,则输出结果为 ( A) 2 2 5 ( B) 2 3 4 ( C) 2 3 4 5 ( D) 2 5 22 在窗
14、体上画一个命令按钮和一个标签,其名称分别为 Command1和 Label1,然后编写如下事件过程 : Private Sub Command1_Click() Counter=0 For i=1 To 4 For j=6 To 1Step-2 Counter=Counter+1 Next j Next i Label1.Caption=Str(Counter) End Sub 程序运行后,单击命令按钮,标签中显示的内容是 ( A) 11 ( B) 12 ( C) 16 ( D) 20 23 命令按钮 Command1的单击事件过程如下: Private Sub Command1_Click(
15、) Dim a(10,10)As Integer x=0 For i=1 To 3 For j=1 To 3 a(i,j)=i*2 Mod j If x a(i,j)Then x=a(i,j) Next Next Print x End Sub 执行上述事件过程后,窗体 上显示的是 ( A) 1 ( B) 2 ( C) 3 ( D) 4 24 窗体上有 1个名称为 Command1的命令按钮,事件过程如下: Private Sub Command1_Click() Dim arr_x(5,5)As Integer For i=1 To 3 For j=2 To 4 arr_x(i,j)=i*j
16、 Next j Next i Print arr_x(2,1);arr_x(3,2);arr_x(4,3) End Sub 运行程序,并单击命令按钮,窗体上显示的内容为 ( A) 0 6 0 ( B) 2 6 0 ( C) 0 6 12 ( D) 2 6 12 25 编写如下程序: Private Sub Command1_Click() Dimi As Integer,j As Integer n=InputBox(“输入一个大于 1的正整数 “) For i=2 To n For j=2 To Sqr(i) If i Mod j=0 Then Exit For Next j If j Sq
17、r(i)Then Print i Next i End Sub 该程序的功能是 ( A)判断 n是否为素数 ( B)输出 n以内所有的奇数 ( C)输出 n以内所有的偶数 ( D)输出 n以内所有的素数 26 设有如下事件过程: Private Sub Command1_Click() For i=1 To 5 j=i Do Print“*“j=j-1 Loop Until j=0 Next i End Sub 运行程序,输出 “*”的个数是 ( A) 5 ( B) 15 ( C) 20 ( D) 25 27 窗体上有一个名称为 Command1的命令按钮,编写如下事件过程: Private
18、Sub Command1_Click() i=0 Do While i 6 For j=1 To i n=n+1 Next i=i+1 Loop Print n End Sub 运行程序,单击命令按钮时,窗体上显示的是 ( A) 10 ( B) 15 ( C) 16 ( D) 21 国家二级 VB机试(控制结构)模拟试卷 8答案与解析 一、选择题 1 【正确答案】 B 【试题解析】 IIf函数可以用来执行简单的条件判断操作,它是 “IfThenElse”结构的简写版本,其格式为: result=IIf(条件 ,True部分 ,False部分 )。 其中 “result”是函数的返回值, “条件
19、 ”是一个逻辑表达式。当 “条件 ”为真时, IIf函数返回“True部分 ”,否则返回 “False部分 ”。 “True部分 ”或 “False部分 ”可以是表达式、变量或其他函数。本题中 IIf函数的作用是如果 x 0则返回 -x,否则返回 x,等价于 -|x|。 【知识模块】 控制结构 2 【正确答案】 D 【试题解析】 选择结构可以使用 IIf函数、 If语句来实现两个分支的选择结构,使用 SelectCase语句实现多分支选择结构, While语句用来描述循环结构。 【知 识模块】 控制结构 3 【正确答案】 B 【试题解析】 块结构条件语句的格式为: If条件 1 Then 语句
20、块 1 ElseIf条件 2 Then 语句块 2 Else 语句块 n End If 如果 “条件 1”为 True,则执行 “语句块 1”并跳出结构;否则如果 “条件 2”为True,则执行 “语句块 2”并跳出结构 否则执行 “语句块 n”并结束整个结构。 【知识模块】 控制结构 4 【正确答案】 A 【试题解析】 命令按钮的 Default属性用于设置窗体的缺省命令按钮, 程序运行时,按下 Enter键将执行该命令按钮的单击事件过程。 IIf函数可用来执行简单的条件判断操作,它是 “IfthenElse” 结构的简写版本。格式为: Result=IIf(条件 , True部分 , Fa
21、lse部分 )。当条件为真时, IIf函数返回 True部分,而当条件为假时,返回 False部分。本题在函数 Fun中判断 x是否比 y小,如果小则返回 x作为返回值,否则返回 y作为返回值,即返回两个参数中的最小值。 【知识模块】 控制结构 5 【正确答案】 C 【试题解析】 多分支控制结构又称为 Select Case语句或 Case语句,可以同时对条件的多个取值来判断。其格式为: Select Case测试表达式 Case表达式列表 1 语句块 1 Case Else 语句块 n End Select Case语句以 Select Case开头,以 End Select结束。 其中,表
22、达式列表 1,表达式列表 2, 称为域值。可采用 3种形式: 表达式 1,表达式 2 ; 表达式 1To表达式 2; Is关系运算表达式。其中,可使用的运算符有等于 (=)、不等于 ( )、小于( )、大于 ( )、小于或等于 ( =)、大于或等于 ( =)。 【知识模块】 控制结构 6 【正确答案】 D 【试题解析】 Trim函数的作用是去掉文本框中字符串两端的空格;多分支控制结构又称为 Select Case语句或 Case语句,可以同时对条件的多个取值来判断,Case后面的表达式可采用 3种形式: 表达式 1,表达式 2 ; 表达式 1To表达式 2; Is关系运算表达式。最终 x1是字
23、符串中数字的个数; x2是字符串中大写字母的个数; x3是字符串中小写字母的个数; x4是字符串中 非字母、非数字字符的个数。 【知识模块】 控制结构 7 【正确答案】 D 【试题解析】 本题考查的考点是宵关循环的。本题中循环的特点是:每执行 3次循环,依次向 a中加上 0+l+2也就是 3;循环共执行了 15次,所以 a中的值应该为 15。 【知识模块】 控制结构 8 【正确答案】 A 【试题解析】 本题考查的考点是有关循环的。本题需要写出每一次循环的变量变化情况。第一次循环时输入 15, If判断为真,所以 a=15, x=15;第二次循环时输入 24, If判断为假,所以 a=15+15
24、=30, x仍然为 15;第三次循环时输入 35, If判断为真,所以 a=30+35=65, x=35;第四次循环时输入 46, If判断为假,所以a=65+35=100, x=35。 【知识模块】 控制结构 9 【正确答案】 A 【试题解析】 本题中有三个 For循环,但是这三个循环之间没有嵌套关系,而是顺序的关系。在第一个循环中依次取出字符串 s中的每一个字符存入数组 a;第二个循环中将数组的第一个元素和最后一个元素互换,第二个元素和倒数第二个元素互换 以此类推完成数组的逆序;第三个循环输出数组元素。 【知识 模块】 控制结构 10 【正确答案】 D 【试题解析】 小题考查的考点是有关循
25、环和数组的。本题为了实现求取最大值,首先应该假设数组中的某一个数就是最大值,冉依次与数组元素比较,一旦某个元素比当前的最大值大,就把它作为新的最大值。 max初值设为 0是不可以的,它没有考虑到数组元素都小于 0的情况。 【知识模块】 控制结构 11 【正确答案】 B 【试题解析】 语句 Exit For的作用是退出当前 For循环。 本题中 For循环语句的循环变量 i不仅在执行到 Next语句时后自动加 1,而且在每次 执行循环体中的 i=i+3语句时,还会加 3。当第 1次进入循环体时 i=0、 n=0;当第 2次进入循环体时 i=4、 n=1;当第 3次进入循环体时 i=8、 n=2,
26、此时当执行i=i+3和 n=n+1语句后, i=11、 n=3, If语句的条件表达式 i 10为真,将退出循环,故文本框中显示的值为 3。 【知识模块】 控制结构 12 【正确答案】 D 【试题解析】 本题的 For循环中改变了循环变量 i的值,而且在循环中还有 Exit语句退出循环,故此需要逐次循环进行分析。第一次循环中 i的初值为 1,然后变为 5,将其累加到 n中然后因其不满足 If条件,所以 i的值加上步长 1(特别重要很容易忘记 )继续循环;第二次循环开始 i的值为 6,加上 4以后变为 10,将其累加到 n中然后因其不满足 If条件,所以 i的值加上步长 1继续循环:第三次循环开
27、始 i的值为 11,加上 4以后变为 15,将其祟加到 n中然后因其满足 If条件退出循环,所以累加三次的值为 5+10+15=30。 【知识模块】 控制结构 13 【正确答案】 B 【试题解析】 本题的 For循环共执行 11次,在每次循环中计算出一个 X的值,然后判断能否被 3整除,如能整除则令计数器 n自加 1。 【知识模块】 控制结构 14 【正确答案】 D 【试题解析】 本题函数过程的原代码仅适合 a不能被 b整除的两数,而当 a能被b整除时则不适用,如 a=4, b=2, a除以 b的余数为 0,而原代码返回的函数值为2。因此需将语句 While a b改为 While a =b。
28、 【知识模块】 控制结构 15 【正确答案】 D 【试题解析】 Visual Basic支持的循环结构包括: ForNext 循环、 For EachNext 循环、 DoLoop 循环和 While循环。 【知识模块】 控制结构 16 【正确答案】 A 【试题解析】 本题在循环中先将 n除以 10的余数 (即个位数字 )连接到 s上,然后将整除 10后除以 10的余数 (即十位上数字 )连接到 s上,然后 n整除 100的值赋值给 n(即去掉最后两位 ),然后继续进行循环,所以最终将会输出数字的逆序。 【知识模块】 控制结构 17 【正确答案】 A 【试题解析】 本题的函数中使用了 Do循环
29、,循环条件是 i =sLen 2;由于字符串的长度为 5,所以循环会执行两次;在每次循环中使用 Mid函数依次取得字符串的第一个字符、最后一个 字符、第二个字符、倒数第二个字符。 【知识模块】 控制结构 18 【正确答案】 C 【试题解析】 Do循环语句的功能是:当指定的 “循环条件 ”为真或直到指定的 “循环条件 ”变为真之前重复执行循环体。 Do While|UntilLoop 循环是在条件满足的情况下才执行一次循环体,而 DoLoop while|Until 循环不管是否满足条件都先执行一次循环体,然后再判断条件是否成立以决定后续操作。小题的 A选项由于 i的值从 5开始递增,水远不会满
30、足 i 0而无限循环; B选项由于 i的值从 5开始递增,永远满足 i=1而无限循环; D选项由于 i的值从 0开始递减,永远满足 i 1而无限循环。 【知识模块】 控制结构 19 【正确答案】 B 【试题解析】 在函数 fun中会对传过来的参数 num进行判断,如果不为 0则进行循环,将各位数字乘到一起然后作为函数的返回值。 【知识模块】 控制结构 20 【正确答案】 B 【试题解析】 本题中是在一个 Do循环中对一个数字进行分解,首先输出该数字整除 10之后冉除以 10得剑的余数 (即十位上数字 ),然后输出该数除以 10得到的余数 (即个位数字 ),然后将该数去掉十 位和个位下的数字以后
31、继续循环,最终依次输出 5、 6、 3、 4、 1、 2。 【知识模块】 控制结构 21 【正确答案】 A 【试题解析】 Do型循环结构,首先看条件判断在循环体的前面还是后面,如果是先判断条件,则有可能一次也不执行循环体:如果是后判断条件,则无论条件是什么,争少执行一次循环体。在 until循环中条件为 False时执行衔环体,条件为 True时退出循环;在 While循环中条件为 True时执行循环体,条件为 FaIse时退出衔环。本题是一个嵌套的 Do循环,外层循环是后判断条件的 Until型循环,内层循环是先判断条件的 While型循环。根据输入的值 20可判断出三次输出的结果为 2、
32、2、 5。 【知识模块】 控制结构 22 【正确答案】 B 【试题解析】 本题考查的考点是有关循环的。通过观察可以得知,在每次内循环中, Counter的值会增加 1,所以最终结果就是内循环执行的总次数。由于内循环和外循环都是 For循环,所以循环次数一定,外循环共执行 4次,每次外循环中内循环都执行 3次,故内循环执行的总次数为 4*3=12次。 【知识模块】 控制结构 23 【正确答案】 B 【试题 解析】 本题中使用二重循环为二维数组赋初值,每个元素的值为行号 2然后除以列号的余数;接下来找出数组的最大值。由于列号最大只能为 3,所以余数的最人值为 2。 【知识模块】 控制结构 24 【
33、正确答案】 A 【试题解析】 本题二重循环为二维数组的部分元素赋值,其中 arr x(2, 1)的值因为列号为 1,并没有在循环中赋值,保持了默认初值 0; arr x(3, 2)的值被赋值为3*2的值 6; arr x(4, 3)的值因为行号为 4也没有在循环中赋值,也保持默认初值0。 【知识模块】 控制结构 25 【正确答案】 D 【试题解析】 本题中的外循环是从 2循环到 n,然后进入内循环,在内循环中依次判断 i能否被 i整除,若能整除则退出内循环;内循环结束后进行判断,如果是中途退出内循环的则必然不满足 i Sqr(i),不会输出 i的值;只有 i不能被任何一个 j整除的情况下才会输出 i的值,即判断 i是不是素数,只有素数才输出。 【知识模块】 控制结构 26 【正确答案】 B 【试题解析】 本题是一个二重循环,在内循环中输出 “*”,而在每次外循环中内循环的循环次数均为 i次,即共输出 1。 【知识模块 】 控制结构 27 【正确答案】 B 【试题解析】 本题是一个二重循环,最后输出的是内循环总共执行的次数,即1+2+3+4+5=15。 【知识模块】 控制结构