1、国家二级 VB机试(控制结构)模拟试卷 6及答案与解析 一、选择题 1 计算下面分段函数的正确语句是 ( A) y=IIf(x 0, x+1, IIf(x 0, x-1, 0) ( B) y=IIf(x=0, 0, IIf(x 0, x-1, x+1) ( C) y=IIf(x 0, x+1, IIf(x 0, 0, x-1) ( D) y=IIf(x=0, 0, x-1, x+1) 2 设窗体上有 Text1、 Text2两个文本框,并编写了下面的程序代码: Private Sub Text1_KeyPress(KeyAscii As Integer) If“A“ =Chr(KeyAscii
2、)And Chr(KeyAscii) =“Z“Then KeyAscii=KeyAscii+(Asc(“a“)-Asc(“A“) End If n=0 IfKeyAscii=13 Then For k=1 To Len(Text1) ch$=Mid(Text1, k, 1) If“a“ =ch And ch =“z“Then n=n+1 Next k Text2=n End If End Sub 程序运行时,在 Text1文本框中输入 “Visual Basic6 0”后按回车键,则在 Text2文本框显示的是 ( A) 11 ( B) 16 ( C) Visual Basic6 0 ( D)
3、 visual basic6 0 3 设有如下事件过程: Private Sub Form_Click() Sum=0 For k=1 To 3 If k =1 Then x=1 Elself k =2 Then x=2 ElseIf k =3 Then x=3 Else x=4 End If Sum=Sum+x Next k Print Sum End Sub 程序运行后, 单击窗体,输出结果是 ( A) 9 ( B) 6 ( C) 3 ( D) 10 4 三角形的构成条件是:任意 2边之和大于第 3边。设变量 a、 b、 c是 3条直线的长度,要求判断这 3条直线能否构成一个三角形。下面有
4、 3个程序段可以正确判断,另 个不能正确判断的是 ( A) If a+b c And a+c b And b+c a Then Print“可以构成一个三角形 “ Else Print“不能构成三角形 “ End If ( B) If a+b C Or a+c b Or b+C a Then Print“可以构成一个三 角形 “ Else Print“不能构成三角形 “ End If ( C) If a+b =c Or a+c =b Or b+c =a Then Print“不能构成三角形 “ Else Print“可以构成一个三角形 “ End If ( D) If a+b =c Or a+
5、c =b Then Print“不能构成三角形 “Elself b+c =a Then Print“不能 构成三角形 “ Else Print“可以构成一个三角形 “ End If 5 现有如下一段程序: Private Sub Command1_Click() x=UCase(InputBox(“输入: “) Select Case x Case“A“To“C“ Print“考核通过 !“ Case“D“ Print“考核不通过 !“ Case Else Print“输入数据不合法 !“ End Select End Sub 执行程序,在输入框中输入字母 “B”,则以下叙述中正确的是 ( A
6、)程序运行错 ( B)在窗体上显示 “考核通过 !” ( C)在窗体上显示 “考核不通过 !” ( D)在窗体上显示 “输入数据不合法 !” 6 编写如下程序: Private Sub Command1_Click() Dim m As Integer, n As Integer m=2: n=1 Select Case m Case1 Select Case n Case1 Print“AAA“ Case2 Print“BBB“ Case2 Print“CCC“ End Select End Sub 程序运行后,单击命令按钮 Command1,输出结果为 ( A) AAA ( B) BBB
7、( C) CCC ( D) 1 7 在窗体上画一个命今按钮,其名称为 Command1,然后编写如下 代码: Option Base1 Private Sub Command1_Click() Dim a a=Array(1, 2, 3, 4) j=1 For i=4To1Step-1 s=s+a(i)*j j=j*10 Next i Print s End Sub 程序运行后,单击命令按钮,其输出结果是 ( A) 4321 ( B) 1234 ( C) 34 ( D) 12 8 有下面程序代码: Private Sub Command1_Click() a=3 s=0 For k=1To5
8、s=s+a Mod k a=a+k Next k Print s End Sub 程序运行后,单击命令按钮 Command1,输出结果是 ( A) 15 ( B) 13 ( C) 4 ( D) 1 9 窗体上有 1个名称为 Command1的命令按钮; 1个名称为 List1、没有列表项的列表框。编写如下程序: PrivatevSub Command1_Click() Dim x As String, s As String, temp As String Dim i As Integer x=InputBox(“输入字符串 “, “输入 “) If x “Then For i=Len(x)T
9、o 1 Step-1 s=Mid(x, i, 1) If S “Then temp=s+temp Else List1 AddItem temp s=“ temp=“ End If Next List1 AddItem temp Else MsgBox“输入内容为空 !“ End If End Sub 程序运行后,单击命令按钮 Command1,并输入 “Happy new year”,则在 List1中显示的内容为 ( A) year new Happy ( B) Happy new year ( C) raey wen yppaH ( D) yppaH wen raey 10 在窗体上画一
10、个名称为 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 10 Then Exit For Next Text1 Text=Str(n) End Sub 程序运行后,单击命令按 钮,在文本框中显示的值是 ( A) 2 ( B) 3 ( C) 4 ( D) 5 11 在窗体上画一个名称为 Command1的命令按钮,然后编写如下程序: Option Base1 Private Su
11、b Command1_Click() d=0: c=10: x=Array(10, 12, 21, 32, 24) For i=1To5 If x(i) c Then d=d+x(i): c=x(i) Else d=d-C End If Next i Print d End Sub 程序运行后,如果单击命令按钮,则在窗体上输出 的内容为 ( A) 89 ( B) 99 ( C) 23 ( D) 77 12 有以下通用过程: Function fun(N As Integer) s=0 For k=1ToN s=s+k*(k+1) Next k fun=s End Function 该过程的功能
12、是 ( A)计算 N! ( B)计算 1+2+3+N ( C)计算 12233NN ( D)计算 12+23+34+N(N+1) 13 窗体上有一个名称为 Text1的文本框,一一个名称为 Command1的命令按钮。要求 编写一个程序,统计文本框中 09各数字字符的个数。某人编写如下程序: Private Sub Command1_Click() Dim count(10) As Integer第 1个 For循环 For i=0To9 count(i)=0 Next s=Trim(Text1 Text) strLen=Len(s)第 2个 For循环 For i=1To strLen c=
13、Mid(s, i, 1) If c =“0“And c =“9“Then x=Val(c)=count(i)=count(i)+1 End If Next第 3个 For循环 For i=0To9 Print Str(i), count(i) Next End Sub 运行程序后,发现不能实现题目的要求,程序应该进行的修改是 ( A)将第 2个 For循环的初值改为 0 ( B)将第 2个 For语句改为 For i=0To9 ( C)去掉 x=Val(c)语句 ( D)将 count(i)=count(i)+1改为 count(x)=count(x)+1 14 设有如下事件过程: Priva
14、te Sub Form Click() x=0 While x 10 x=x+1: x=x*x Wend Print x End Sub 运行程序,单击窗体,输出结果是 ( A) 16 ( B) 19 ( C) 20 ( D) 25 15 在窗体上画两个文本框 (名称分别为 Text1和 Text2)和一个命令按钮 (名称为Command1),然后编写如下事件过程: Private Sub Command1_Click() x=0 Do While x 50 x=(x+2)*(x+3): n=n+1 Loop Text1 Text=Str(n): Text2 Text=Str(x) End S
15、ub 程序运行后,单击命令按钮,在两个文本框中显示的值分别为 ( A) 1和 0 ( B) 2和 72 ( C) 3和 50 ( D) 4和 168 16 下面程序计算并输出的是 PrivatevSub Command1_Click() a=10: s=0 Do s=s+a*a*a: a=a-1 Loop Until a =0 Print s End Sub ( A) 13+23+33+103 的值 ( B) 10!+3!+2!+1! 的值 ( C) (1+2+3+10)3 的值 ( D) 10个 103的和 17 编写如下程序 : Private Sub Command1_Click() D
16、im m As Integer, n As Integer m=1: n=0 Do While m 20 n=m+n: m=3*m+1 Loop Print m, n End Sub 程序运行后,单击命令按钮 Command1,输出结果为 ( A) 40 18 ( B) 40 19 ( C) 20 64 ( D) 21 64 18 窗体上有一个名称为 Commandl1的命令按钮,其单击事件过程如下: Private Sub Command1_Click() Dim s As Double s=0: i=1 Do Whlile i 6 s=s+i (i+1): i=i+1 Loop Print
17、 s End Sub 该事件过程的功能是计算一个表达式的值,该表达式是 ( A) 1+1 2+2 3+3 4+4 5 ( B) 1+1 2+2 3+3 4+4 5+5 6 ( C) 1 2+2 3+3 4+4 5 ( D) 1 2+2 3+3 4+4 5+5 6 19 下面程序的功能是输出 100以内所有素数: Private Sub Command1_Click() For n=2To100 isprime=True: k=2 Do While k =n 2And_ If n Mod k=0 Then isprime=False k=k+1 Loop If isprime Then Prin
18、t n Next n End Sub 为使上面程序可以实现该功能,程序代码中横线处应填写的代码是 ( A) isprime ( B) Not isprime ( C) n 100 ( D) n =100 20 假定有以下程序段 For i=1To3 For i=5To1Step-1 Print i*j Next j Next i 则语句 Print i*j的执行次数是 ( A) 15 ( B) 16 ( C) 17 ( D) 18 21 编写如下程序: Private Sub Command1_Click() Dim a(3, 3)As Integer, b(3, 3)As Integer F
19、or i=1To3 For j=1To3 a(i, j)=i+j: b(i, j)=a(i, j)+i*(j-1) Next i Next i For i=To3 For j=1To3 Print b(i, j); Next i Print Next i End Sub 程序运行后,单击命令按钮 Command1,输出结果为 ( A) 2 3 4 3 4 5 4 5 6 ( B) 2 4 6 3 6 9 4 8 12 ( C) 3 5 7 5 8 11 7 11 15 ( D) 4 6 8 7 10 13 10 14 18 22 在窗体上画一个命令按钮,然后编写如下事件过程: Private
20、Sub Command1_Click() Dim I, Num Randomize Do For I=1To1000 Num=Int(Rnd*100): Print Num; Select Case Num Case12 Exit For Case58 Exit Do Case65, 68, 92 End End Select Next I Loop End Sub 上述事件过程执行后,下列描述中正确的是 ( A) Do循环执行的次数为 1000次 ( B)在 For循环中产生的随机数小于或等十 100 ( C)当所产生的随机数为 12时结束所有循环 ( D)当所产生的随机数为 65、 68或
21、 92时窗体关闭、程序结束 23 设有如下程序: Option Base1 Dim a(3, 4)As Integer, b(4, 3)As Integer Private Sub Command1_Click()循环 1 For i=1To3 For j=1To4 b(j, i)=a(i, j) Next j Next i循环 2 x=b(1, 1) For i=1To4 For j=1To3 Print b(i, j); If x b(i, j)Then x=b(i, j) Next j Print Next i End Sub 程序中的数组 a已被赋值。以下关于上述程序的叙述中,正确的是
22、 ( A)窗体模块中,不能使用 Dim声明 a、 b数组 ( B) “循环 1”可以正常运行 ( C) “循环 2”中循环变量 i、 j的终值不对,所以不能正常运行 ( D)程序可以正常运行, x中保存的是数组 b中所有元素中最小的数 24 在窗体上画一个名称为 Command1的命令按钮,并编写如下程序: Option Base1 Private Sub Command1_Click()Dim a(4, 4) For i=1To4 For j=1To4 a(i, j)=(i-1)*3+j Next j Next i For i=3To4 For j=3To4 Print a(j, i); N
23、ext j Print Next i End Sub 运行程序,单击命令按钮,则输出结果为 ( A) 6 9 7 10 ( B) 7 10 8 11 ( C) 8 11 9 12 ( D) 9 12 10 13 25 命令按钮 Command1的事件过程如下: Private Sub Command1_Click() Dim arr(5, 5)As Integer Dim i As Integer, j As Integer For i=1To4 For j=2To4 arr(i, j)=i+j Next j Next i Print arr(1, 3)+arr(3, 4) End Sub 执
24、行上述过程,输出结果是 ( A) 6 ( B) 7 ( C) 11 ( D) 12 26 设有如下事件过程: Private Sub Command1_Click()Dim a a=Array(3, 5, 6, 3, 2, 6, 5, 3, 5, 4, 3, 9, 4, 5, 6, 3, 5) x=0 n=UBound(a) For i=0To n m=0 For j=0To n If a(i)=a(j) Then m=m+1 End If Next i Ifm x Then x=m: b=a(i) End If Next i Print b End Sub 运行程序,输出是 ( A) 2 (
25、 B) 3 ( C) 5 ( D) 9 27 阅读程序: Option Base1 Private Sub Form_Click() Dim Arr(3, 3)As Integer For i=1To3 For i=1To3 If j=i Or j=3-i+1 Then Arr(i, j)=1 Else Arr(i, j)=0 End If Next j Next i For i=1To3 For j=1To3 Print Arr(i, j); Next j Print Next i End Sub 程序运行后,如果单击窗体,则输出结果为 ( A) 1 1 1 1 1 1 1 1 1 ( B)
26、 0 0 0 0 0 0 0 0 0 ( C) 1 0 0 0 1 0 0 0 1 ( D) 1 0 1 0 1 0 1 0 1 国家二级 VB机试(控制结构)模拟试卷 6答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 IIf函数可用来执行简 单的条件判断操作,它是 “IfThenElse” 结构的简写版本。格式为: result=IIf(条件, True部分, False部分 )。当条件为真时, lIf函数返回 True部分,而当条件为假时,返回False部分。本题中分段函数共有三段,因此需要使用嵌套的 IIf函数。 【知识模块】 控制结构 2 【正确答案】 A 【试题解析】 本
27、题中的第一个 IfThen 结构的作用是将所有输入的大写字符转换为小写字符;第二个 If结构的条件是按下回车键,里面嵌套了一个 For循环,在循 环中依次取出文本框中的每一个字符进行判断,若其为小写字符则 n自加 1,循环结束后 n的值就是文本框中字母的个数。 【知识模块】 控制结构 3 【正确答案】 B 【试题解析】 本题总共循环三次,在每次循环中由于循环变量 k的值不同,将分别进入 If语句的不同分支。在块结构的 If语句中,一旦满足某个 If或者 Elself后面的条件,将不再判断其他条件是否满足。所以本题输出的是 1+2+3的值。 【知识模块】 控制结构 4 【正确答案】 B 【试题解
28、析】 任意两边之和大于第三边,必须要求任意两 个变量的和全部大于另一个变量,也就是三个表达式必须同时成立,只有一个或两个成立是不行的,故此 B选项不能正确判断。 【知识模块】 控制结构 5 【正确答案】 B 【试题解析】 多分支控制结构又称为 Select Case语句或 Case语句,可以同时对条件的多个取值来判断。 【知识模块】 控制结构 6 【正确答案】 C 【试题解析】 多分支控制结构又称为 Select Case语句或 Case语句,可以同时对条件的多个取值来判断。本题是一个嵌套的 Select Case语句,首先判断 m的 值,本题由于 m的值为 2,所以不会执行 case1分支,
29、直接执行 Case2分支输出“CCC” 【知识模块】 控制结构 7 【正确答案】 B 【试题解析】 本题考查的考点是有关循环的。在本题的循环中,首先取得数组的最后一个元素并乘 1后放入 s;然后取得第 3个元素并乘 10后加到 s里面,然后取得第 2个元素并乘 100后加到 s里面,最后取得第 1个元素并乘 1000后加到 s里面,所以 s的最终值为 1234。 【知识模块】 控制结构 8 【正确答案】 C 【试题解析】 在 For循环中 k的值从 1变化到 5,在每次循环中为累加和变量 s累加当 a Mod k的值然后令 a自加 k,故此整个循环过程中 s=0+0+0+1+3=4。 【知识模
30、块】 控制结构 9 【正确答案】 A 【试题解析】 本题的循环中倒序从字符串 s中依次取出每一个字符,只要该字符不是空格就将其连接到 temp的前断,见到空格就把连接好的 temp加入到列表框中,即先加入 year,然后是 new,最后是 Happy。 【知识模块】 控制结构 10 【正确答案】 B 【试题解析】 本题考查的考点是有关循环的。实际上本题就要关注循环 何时结束,第一次循环中, i的值变成 3, n的值变为 1,然后 i+1变成 4;由于满足循环条件,所以第二次循环中, i的值变成 7, n的值变为 2,然后 i+1变成 8:由于还是满足循环条件,所以第三次循环中, i的值变成 1
31、1, n的值变为 3,然后判断由于 i已经大于 10,所以退出循环,最后 n的值为 3。 【知识模块】 控制结构 11 【正确答案】 C 【试题解析】 本题的循环中依次用数组的每个元素和 c进行比较,如果比 c大就将数组元素累加,并令数组元素成为新的 c值;否则令累加和 d减去 c。在 5次循环中 d的累加过程为 -10+12+21+32-32=23。 【知识模块】 控制结构 12 【正确答案】 D 【试题解析】 在函数中每次向累加和变量 s中累加 k*(k+1)的值,循环变量 k从1循环到 N,即为求 12+23+34+N(N+1) 的值。 【知识模块】 控制结构 13 【正确答案】 D 【
32、试题解析】 本题中要求别统计数字 0 9的个数,使用了一个数组 count来存放备个数字的个数。在第一个 For循环中将数组的各个元素设置为 0,在第二个循环中,依次取出字符串中的每一个字符,判断是不是在 0 9之间,如果在范围内,则应该令对应的数组元素加 1。如果写成 count(i)=count(i)+1,只能顺序的令每一个数组元素都加 1,只有改写成 count(x)=count(x)+1,让 x作为下标,才能保证让 x对应的数组元素加 1。 【知识模块】 控制结构 14 【正确答案】 D 【试题解析】 本题是简单 While循环,在循环中改变循环变量 x的值,要注意退出循环时 x必然是
33、不会满足循环条件的。本题中循环中 x依次变化为 1、 4、 25。 【知识模块】 控制结构 15 【正确答案】 B 【试题解析】 本题考查的考点是有关 Do型循环的。对于这种循环结构,首先看条件判断在循环体的前面还是后面,如果是先判断条件,则有可能一次也不执行循环体;如果是后判断条件,则无论条件是什么,至少执行一次循环体。在 until循环中条件为 False时执行循环体,条件为 True时退出循环:在 While循环中条件为 True时执行循环体,条件为 False时退出循环,这一点要注意区分清楚。本题只需要实际计算一下两次循环中 x和 n值的变化即可容易的得出结果。 【知识模块】 控制结构
34、 16 【正确答案】 A 【试 题解析】 对于 Do型循环结构,首先看条件判断在循环体的前面还是后面,如果是先判断条件,则有可能一次也不执行循环体;如果是后判断条件,则无论条件是什么,至少执行一次循环体。在 Until循环中条件为 False时执行循环体,条件为 True时退出循环:在 While循环中条件为 True时执行循环体,条件为False时退出循环。本题是一个比较简单的 Do循环,计算从 1到 10的立方和。 【知识模块】 控制结构 17 【正确答案】 A 【试题解析】 本题的 Do循环是一个先判断条件型的循环,在循环中将循环变量m的值每次改变。分析循环可看出,在 4次循环中 m的值
35、分别为 1、 4、 13、 40,而只有前三次循环中的 m值被累加到 n中,最后一次循环由于不满足 m 20而跳出。 【知识模块】 控制结构 18 【正确答案】 D 【试题解析】 本题中 Do循环的循环变量 i的初值为 1,继续循环的条件是 i6,在每次循环中 i的值加 1,因此循环会执行 5次;在第一次循环中累加 1 2,第二次循环中累加 2 3,第三次循环中累加 3 4 即最后计算的是 1 2+23+3 4+4 5+5 6的值。 【知识模块】 控制结构 19 【正确答案】 A 【试题解析】 求素数的基本思路是,用 2到 n 2依次去除要判断的数 n,如果能整除就将 isprime置为 Fa
36、lse代表不是素数:如果 isprime已经为 False,那么循环没有继续执行的必要了,所以应填入 isprime=True,由于是布尔型变量,可以简写为 isprime。 【知识模块】 控制结构 20 【正确答案】 A 【试题解析】 本题考查的考点是有关二重循环的。 ForNext 循环语句可提供一个重复执行的语句序列,遵循 “先检查,后执行 ”的规则,执行过程中,循环次数=Int(终值 -初值 )步长 +1。二重循环的内循环语句执行次数等于内外循环次数之积。 【知识模块】 控制结构 21 【正确答案】 B 【试题解析】 本题中有两个二维数组 a和 b,然后用一个二重循环为两个数组赋值,根
37、据每次循环中 i和 j的值不难得出 B为正确答案。 【知识模块】 控制结构 22 【正确答案】 D 【试题解析】 本题考查的考点是有关随机数和退出语句的。在本题中,首先在循环中生成一个随机数,由于 Rnd函数可以生成 0 1开区间的数,所以Int(Rnd*100)能够生成 0 99之间的整数,随后对此数进行判断,当随机数为 12时退出内循环;当随机数为 58时退出外循环;当随机数为 65、 68或 92时将会结束整个窗体的运行。本题中的循环次数受随机数控制,所以次数不定。 【知识模块】 控制结构 23 【正确答案】 B 【试题解析】 在窗体模块中使用 Dim声明模块接变量,也可以声明模块级数组
38、:在循环 1中 i从 1到 3, j从 1到 4,无论是访问 b(j, i)还是 a(i, j)均在数组的范围内,可以正常运行;在循环 2中 b(i, j)的值也在数组范围内,循环可以正常运行;最后 x里面保存的是数组中 最大的数。 【知识模块】 控制结构 24 【正确答案】 D 【试题解析】 本题中首先用一个二重循环为二维数组的每一个元素赋值,然后输出二维数组的部分元素,即依次输出 a(3, 3)、 a(4, 3)、 a(3, 4)、 a(4, 4)的值,根据二维数组元素的值,输出分别为 9、 12、 10、 13。 【知识模块】 控制结构 25 【正确答案】 C 【试题解析】 本题中首先在
39、一个二重循环中给二维数组 RIT的部分元素赋值,循环结束后输出两个数组元素的和,根据题意 arr(1, 3)+arr(3, 4)=4+7=11。 【知识模块】 控制结构 26 【正确答案】 B 【试题解析】 本题是一个二重循环,外循环从 0循环到 n,也就是遍历整个数组:在内循环中统计数组中和 a(i)相同的数组元素的个数放到 m中,内循环结束后判断 m是不是比 x大,如果比 x大的话让 m成为新的 x,并且把当前数组元素放到 b中,其本质是求出重复次数最多的数字, x保存重复次数, b保存该数字。 【知识模块】 控制结构 27 【正确答案】 D 【试题解析】 本题是用一个二重循环为二维数组赋值,只有满足下标 j=i或者j=3-i+1才将其设置为 1,否则设置为 0,如果写出这个二维数组可以看出,两个对角线的元素被设置成 1。 【知识模块】 控制结构
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1