1、国家二级 VB机试(控制结构)模拟试卷 5及答案与解析 一、选择题 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 Elself score 60 Then r=2
2、Else 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_Cli
3、ck() 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=TrimText1 Text) strLen=Len(s) For i=1To strLen c=Mid(s, i, 1) Select Case c 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, “
5、x4“; x4 End Sub 以下关于上述程序的叙述中,正确的是 ( A) s是去掉文本框中字符串末尾的空格 ( B) Select Case c有误, Case后应该是一个表达式 ( C)各 Case分支条件有误,不能用 To表示字符的取值区 间 ( D) x4是字符串中非字母、非数字字符的个数 7 阅读程序: Private Sub Form Click() a=0 For j=1To15 a=a+j Mod3 Next j Print a End Sub 程序运行后,单击窗体,输出结果是 ( A) 105 ( B) 1 ( C) 120 ( D) 15 8 设有以下程序: Privat
6、e Sub Form_Click() 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 up 程序运行后,单击窗体,在输入对话框中依次输入 15、 24、 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=1To n a(k
7、)=Mid(s, k, 1) Next k For i=1To n 2 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
8、=1To10 a(k)=InputBox(“输入一个整数 “) 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)把 If a(k) max Then改为 If a(k) max Then ( B)把 max=a(k)改为 a(k)=max ( C)把第 2个循环语句 For k=1To10改为 For k=2To10 ( D)把
9、max=0改为 max=a(10) 11 在窗体上画一个名称为 Text1的文本框和一个名称为 Command1的命令按钮,然后编写如下事件过程: Private Sub Command1_Click() Dimvi As Integer, n As Integer For i=0To50 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() Di
10、m i As Integer, n As Integer For i=1To20 i=i+4: n=n+i If i 10Then 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=0To10 X=2*i-1 If X Mod3=0Then n=n+1 Next i Print n End Sub 运行程序,单击命令按钮,则窗体上显示
11、的是 ( A) 1 ( B) 3 ( C) 5 ( D) 7 14 设 a、 b都是自然数,为求 a除以 b的余数,某人编写了以下函数: Fvunction 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=a b ( C)把 While a b改为 While a b ( D)把 While a b改为 While a =b 15 以下 Visual Basi
12、c不支持的循环结构是 ( A) For.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&n Mod10: s=s&n 10Mod10 n=n 100 Loop Print s End Sub 程序运行后,单击命令按钮 Command1,并输入数值 123456,则输出结果为 ( A) 654321 ( B) 563412 ( C)
13、642531 ( D) 615243 17 窗体上有 1个名称为 Command1的命令按钮,事件过程及函数过程如下: Private Sub Command1_Click() Dim m As String m=InputBox(“请输入字符串 “) Print pick_str(m) End Sub Private Function pick_str(s As String)As String temp=“: i=1: sLen=Len(s) Do While i =sLen 2 temp=temp+Mid(s, i, 1)+Mid(s, sLen-i+1, 1) i=i+1 Loop p
14、ick_str=temp End Function 运行程序,单击命令按钮,并在输入对话 框中输入 “basic”,则在窗体上显示的内容为 ( A) bcai ( B) cbia ( C) bcais ( D) cbias 18 以下能够正常结束循环操作的程序段是 ( A) i=5 Do i=i+1 Loop Until i 0 ( B) i=5 Do i=i+2 Loop Until i=1 ( C) i=5 Do While i 0 i=i-2 Loop ( D) i=0 Do While i 1 i=i-2 Loop 19 有如下程序: Function fun(ByVal num As
15、 Integer)As Integer Dim k As Integer k=1 num=Abs(num) Do While num k=k*(num Mod10): num=num 10 Loop fun=k End Function Private Sub Form_Click() Dim n As Integer, r As Integer n=InputBox(“请输入一个数: “): n=Int(n): r=fun(n): Print r End Sub 程序运行后,单击窗体,在输入对话框中输入 246,输出结果为 ( A) 120 ( B) 48 ( C) 24 ( D) 60 2
16、0 编写如下程序: Private Sub Command1_Click() Dim n As Long, s As String n=InputBox(“输入一个数 “) Do While n 0 Print n 10Mod10;: Print n Mod 10: n=n 100 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) 6 1 5 2 4 3 21 编写如下程序: Private Sub Comm
17、and1_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 EndvSub 程序运行后,单击命令按钮 Command1,并输入数值 20,则输出结果为 ( A) 2 2 5 ( B) 2 3 4 ( C) 2 3 4 5 ( D) 2 5 22 在窗体上画一个命令按钮和一个标签,其名称分别为 Command1和 Label
18、1,然后编写如下事件过程: Private Sub Command1_Click() Counter=0 For i=1T04 For i=6To1Step-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() Dim a(10, 10)As Integer x=0 For i=1To3
19、For j=1To3 a(i, j)=i*2Mod 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=1To3 For j=2To4 arr_x(i, j)=i*j Next j Next i Print arr_x(2, 1); arr_x(3, 2)
20、: 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() Dim i As Integer, j As Integer n=InputBox(“输入一个大于 1的正整数 “) For i=2To n For j=2To Sqr(i) If i Mod j=0Then Exit For Next j If j Sqr(i)Then Print i Next i End Sub 该程序的功能是 (
21、 A)判断 n是否为素数 ( B)输出 n以内所有的奇数 ( C)输出 n以内所有 的偶数 ( D)输出 n以内所有的素数 26 设有如下事件过程: Private Sub Command1_Click() For i=1To5 j=1 Do Print“*“j=j-1 Loop Until j=0 Next i End Sub 运行程序,输出 “*”的个数是 ( A) 5 ( B) 15 ( C) 20 ( D) 25 27 窗体上有一个名称为 Command1的命令按钮,编写如下事件过程: Private Sub Command1_Click() i=0 Do While i 6 For
22、j=1To i n=n+1 Next i=i+1 Loop Print n End Sub 运行程序,单击命令按钮时,窗体上显示的是 ( A) 10 ( B) 15 ( C) 16 ( D) 21 国家二级 VB机试(控制结构)模拟试卷 5答案与解析 一、选择题 1 【正确答案】 B 【试题解析】 IIf函数可以用来执行简单的条件判断操作,它是 “IfThenElse”结构的简写版本,其格式为: result=IIf(条件, True部分, False部分 )。其中“result”是函数的返回值, “条件 ”是一个逻 辑表达式。当 “条件 ”为真时, IIf函数返回 “True部分 ”,否则返
23、回 “False部分 ”。 “True部分 ”或 “False部分 ”可以是表达式、变量或其他函数。本题中 IIf函数的作用是如果 x 0则返回 -x,否则返回 x,等价于 -|x|。 【知识模块】 控制结构 2 【正确答案】 D 【试题解析】 选择结构可以使用 lIf函数、 If语句来实现两个分支的选择结构,使用 Select Case语句实现多分支选择结构, While语句用来描述循环结构。 【知识模块】 控制结构 3 【正确答案】 B 【试题解析】 块结构条件语句的格式为: If条件 1 Then 语句块 1 ElseIf条件 2 Then 语句块 2 Else 语句块 n End If
24、 如果 “条件 1”为 True,则执行 “语句块 1”并跳出结构:否则如果 “条件 2”为True,则执行 “语句块 2”并跳出结构 否则执行 “语句块 n”并结束整个结构。 【知识模块】 控制结构 4 【正确答案】 A 【试题解析】 命令按钮的 Default属性用于设置窗体的缺省命令按钮,程序运行时,按 F Enter键将执行该命令按钮的单击 事件过程。 IIf函数可用来执行简单的条件判断操作,它是 “IfthenElse” 结构的简写版本。格式为: Result=IIf(条件, True部分, False部分 )。当条件为真时, IIf函数返回True部分,而当条件为假时,返回 Fal
25、se部分。本题在函数 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结束。 其中,表达式列表 1,表达式列表 2, 称为域值。可采用 3种形式: 表达式 1,表达式 2 ;
26、 表达式 1To表达式 2; Is关系运算表达式。其中,可使用的运算符有等于 (=)、不等于 ( )、小于( )、大于 ( )、小于或等于 ( =)、大于或 等于 ( =)。 【知识模块】 控制结构 6 【正确答案】 D 【试题解析】 Trim函数的作用是去掉文本框中字符串两端的空格;多分支控制结构又称为 Select Case语句或 Case语句,可以同时埘条件的多个取值来判断,Case后面的表达式可采用 3种形式: 表达式 1,表达式 2 : 表达式 1To表达式 2: Is关系运算表达式。最终 x1是字符串中数字的个数; x2是字符串中大写字母的个数; x3是字符串中小写字母的个数: x
27、4是字符串中非字母、非数字字符的个数。 【知识模块】 控制结构 7 【正确答案】 D 【试题解析】 本题:考查的考点是有关循环的。本题中循环的特点是:每执行 3次循环,依次向 a中加上 0+1+2也就是 3:循环共执行了 15次,所以 a中的值应该为 15。 【知识模块】 控制结构 8 【正确答案】 A 【试题解析】 本题考查的考点是有关循环的。本题需要写出每一次循环的变最变化情况。第一次循环时输入 15, If判断为真,所以 a=15, x=15:第二次循环时输入 24, If判断为假,所以 a=15+15=30, x仍然为 15:第三次循环时输入 35, If判断为真,所以 a=30+35
28、=65, x=35:第四次循环时输入 46, If判断为假,所以a=65+35=100, x=35。 【知识模块】 控制结构 9 【正确答案】 A 【试题解析】 本题中有个 For循环,但是这三个循环之间没有嵌套关系,而是顺序的关系。在第一个循环中依次取出字符串 s中的每一个字符存入数组 a:第二个循环中将数组的第一个元素平和最后一个元素互换,第二个元素和倒数第二:个元素互换 以此类推完成数组的逆序:第三个循环输出数组元素。 【知识模块】 控制结构 10 【正确答案】 D 【试题解析】 本题考查的考点是有关循环和数组的。本题为了实现求取最大值,首先应该假设数组中的某一个数就是最大值,再依次与数
29、组元素比较,一旦某个元素比当前的最人值大,就把它作为新的最大值。 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,此时当执行i=i+3和 n=n+1语句后, i=11、 n=3, If语句的条件表达式
30、 i 10为真,将退出循环,故文本框中显示的值为 3。 【知识模块】 控制结构 12 【正确答案】 D 【试题解析】 本题的 For循环中改变了循环变量 i的值,而且在循环中还有 Exit语句退出循环,故此需要逐次循环进行分析。第一次循环中 i的初值为 1,然后变为 5,将其累加到 n中然后因其不满足 If条件,所以 i的值加上步长 1(特别 重要很容易忘记 )继续循环:第二次循环开始 i的值为 6,加卜 4以后变为 10,将其累加到 n中然后因其不满足 If条件,所以 i的值加上步长 1继续循环:第三次循环开始 i的值为 11,加上 4以后变为 15,将其累加到 n中然后因其满足 If条件退
31、出循环,所以累加三次的值为 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。 【知识模块】 控制结构 15 【正确答案】 D 【试题解析】 Visual Ba
32、sic支持的循环结构包括: For.Next循环、 For Each.Next循环、 Do.Loop循环和 while循环。 【知识模块】 控制结构 16 【正确答案】 A 【试题解析】 本题在循环中先将 n除以 10的余数 (即个位数字 )连接到 s上,然后将整除 10后除以 10的余数 (即十位上数字 )连接到 s上,然后 n整除 100的值赋值给 n(即去掉最后两位 ),然后继续进行循环,所以最终将会输出数字的逆序。 【知识模块】 控制结构 17 【正确答案】 A 【试题解析】 奉题的函数中使用了 Do循环,循环条件是 i =sLen 2;由于字符串的长度为 5,所以循环会执行两次;存每
33、次循环中使用 Mid函数依次取得字符串的第一个字符、最后一个字符、第二个字符、倒数第二个字符。 【知识模块】 控制结构 18 【正确答案】 C 【试题解析】 Do循环语句的功能是:当指定的 “循环条件 ”为真或直到指定的 “循环条件 ”变为真之前重复执行循环体。 Do while|UntilLoop 循环是在条件满足的情况下才执行一次循环体,而 DoLoop While|Until 循环不管是否满足条件都先执行一次循环体,然后再判断条件是否成立以决定后续操作。本题的 A选项由于 i的值从 5开始递增,永远不会满足 i 0而无限循环; B选项由于 i的值从 5开始递增,永远满足 i=1而无限循环
34、; D选项由于 i的值从 0开 始递减,永远满足 i 1而无限循环。 【知识模块】 控制结构 19 【正确答案】 B 【试题解析】 在函数 fun中会对传过来的参数 num进行判断,如果不为 0则进行循环,将各位数字乘到一起然后作为函数的返回值。 【知识模块】 控制结构 20 【正确答案】 B 【试题解析】 本题中是在一个 Do循环中对一个数字进行分解,首先输出该数字整除 10之后再除以 10得到的余数 (即十位上数字 ),然后输出该数除以 lO得到的余数 (即个位数字 ),然后将该数去掉十位和个位上的数字以后继续循环,最终依次输 出 5、 6、 3、 4、 1、 2。 【知识模块】 控制结构
35、 21 【正确答案】 A 【试题解析】 Do型循环结构,首先看条件判断在循环体的前面还是后面,如果是先判断条件,则有可能一次也不执行循环体;如果是后判断条件,则无论条件是什么,至少执行一次循环体。在 Until循环中条件为 False时执行循环体,条件为 True时退出循环;在 While循环中条件为 True时执行循环体,条件为 False时退出循环。本题是一个嵌套的 Do循环,外层循环是后判断条件的 Until型循环,内层循环是先判断条件的 While型循 环。根据输入的值 20可判断出三次输出的结果为 2、 2、 5。 【知识模块】 控制结构 22 【正确答案】 B 【试题解析】 本题考
36、查的考点是有关循环的。通过观察可以得知,在每次内循环中 Counter的值会增加 1,所以最终结果就是内循环执行的总次数。由于内循环和外循环都是 For循环,所以循环次数一定,外循环共执行 4次,每次外循环中内循环都执行 3次,故内循环执行的总次数为 4*3=12次。 【知识模块】 控制结构 23 【正确答案】 B 【试题解析】 本题中使用二重循环为二维数组赋初值 ,每个元素的值为行号 2然后除以列号的余数;接下来找出数组的最大值。由于列号最大只能为 3,所以余数的最大值为 2。 【知识模块】 控制结构 24 【正确答案】 A 【试题解析】 本题二重循环为二维数组的部分元素赋值,其中 arr_
37、x(2, 1)的值因为列号为 1,并没有在循环中赋值,保持了默认初值 0; arr_x(3, 2)的值被赋值为 3*2的值 6; arr_x(4, 3)的值因为行号为 4也没有在循环中赋值,也保持默认初值 0。 【知识模块】 控制结构 25 【正确答案】 D 【试题解析】 本 题中的外循环是从 2循环到 n,然后进入内循环,在内循环中依次判断 i能否被 i整除,若能整除则退出内循环:内循环结束后进行判断,如果是中途退出内循环的则必然不满足 j Sqr(i),不会输出 i的值;只有 i不能被任何一个 j整除的情况下才会输出 i的值,即判断 i是不是素数,只有素数才输出。 【知识模块】 控制结构 26 【正确答案】 B 【试题解析】 本题是一个二重循环,在内循环中输出 “*”,而在每次外循环中内循环的循环次数均为 i次,即共输出 1。 【知识模块】 控制结构 27 【正确答案】 B 【试题解析】 本题是一个二重循环,最后输出的是内循环总共执行的次数,即1+2+3+4+5=15。 【知识模块】 控制结构
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1