1、国家二级 VB机试(控制结构)模拟试卷 17及答案与解析 一、选择题 1 窗体上有一个名称为 Text1的文本框,一个名称为 Command1的命令按钮。要求编写一个程序,统计文本框中 0-9各数字字符的个数。某人编写如下程序: Private Sub Commandl_Click() Dim count(10)As Integer第 1个 For循环 For i=0 To 9 count(i)=0 Next S=Trim(Text1 Text) strLen=Len(s)第 2个 For循环 For i=1 To strLen C=Mid(s, i, 1) Ifc=”0”And c 循环体
2、Loop ( B) While 循环体 Wend ( C) Do 循环体 Loop Until ( D) Do Until 循环体 Loop 4 设 a、 b都是自然数,为求 a除以 b的余数,某人编写了以下函数: Function fun(a As Integer,b As Integer) While ab a=a-b Wend fun=a End Function 在调试时发现函数是错误的。为使函数能产生正确的返回值,应做的修改是 ( A)把 a=a-b改为 a=b-a ( B)把 a=a-b改为 a=a b ( C)把 While ab改为 While ab改为 While a=b 5
3、 设有如下 事件过程: Private Sub Form_Click() x=0 While X10 Then Exit Do Else x=x+3 End If Loop Until X0 s=S&n Mod 10: s=S&n 10 Mod 10 n=n|100 Loop Print s End Sub 程序运行后,单击命令按钮 Command1,并输入数值 123456,则输出结果为 ( A) 654321 ( B) 563412 ( C) 642531 ( D) 615243 12 下面程序计算并输出的是 Private Sub Commandl_Click() a=10: s=0 D
4、o s=s+a*a*a: a=a-1 Loop Until ay Then x=x-y Else y=y-x End if Loop Print x End Sub 运行程序,单击命令按钮,并输入 2个整数 169和 39,则在窗体上显示的 内容为 ( A) 11 ( B) 13 ( C) 23 ( D) 39 14 窗体上有 1个名称为 Commandl的命令按钮,事件过程及函数过程如下: Private Sub Commandl_Click() Dim m As String m=InputBox(”请输入字符串 ”) Print pick_str(m) End Sub Private:
5、Function pick_str(s As String)As String temp=“: i=1: sLen=Len(s) Do While i1 ( D) i=10 Do i=i 2 Loop Until i=1 17 以下能够正常结束循环操作的程序段是 ( A) i=5 Do i=i+1 Loop Until i0 i=i-2 Loop ( D) i=0 Do While i2 N=N+1: J=J+N*(N+1) Loop Print N: J End Sub 运行程序,单击窗体,输出结果是 ( A) 3 21 ( B) 3 7 ( C) 0 1 ( D) 3 13 20 有如下程
6、序: Function fun(ByVal num As Integer)As Integer Dim k As Integer k=l num=Abs(num) Do While hum k=k*(num Mod 10): 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) 1
7、20 ( B) 48 ( C) 24 ( D) 60 21 下面程序的功能是输出 100以内所有素数: Private Sub Commandl_Click() For n=2 To 100 isprime=True: k=2 Do While k0 k=k+1: arr(k)=d Mod r: d=d r Loop End Sub 程序运行后,单击命令按钮 Commandl,输出结果为 ( A) 1 1 0 0 ( B) 0 0 1 1 ( C) 0 1 0 1 ( D) 1 0 1 0 23 编写如下程序: Private Sub Commandl_Click() Dim n As Lon
8、g, s As String n=InputBox(”输入一个数 ”1) Do While nk 2 End Sub 程序运行后,单击命令按钮 Command1,并输入数值 20,则输出结果为 ( A) 2 2 5 ( B) 2 3 4 ( C) 2 3 4 5 ( D) 2 5 27 编写如下程序: Private SUb Commandl_Click() Dim a(3, 3)As Integer, b(3, 3)As Integer For i=1 To 3 For j=1 To 3 a(i, j)=i+j: b(i, j)=a(i, j)+i*(j-1) Nextj Next i Fo
9、r i=1 To 3 Forj=1 To 3 Printb(i, j); Nextj Print Next i End Sub 程序运行后,单击命令按钮 Commandl,输出结果为 ( 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 28 己知在 4行 3列的全局数组 score(4, 3)中存放了 4个学生 3门课程的考试成绩(均为整数 )。现需要计算每个学生的总分,某人编写程序如下: Option Base 1 Private Sub Co
10、mmand1_Click() Dim sum As Integer sum=0 For i=1 To 4 For i=1 To 3 sum=sum+score(i, j) Nextj Print”第 ”&i ”个学生的总分是: ”; sum Next i End Sub 运行此程序时发现,除第 1个人的总分计算正确外,其他人的总分都是错误的,程序需要修改。以下修改方案中正确的是 ( A)把外层循环语句 For i=1 To 4改为 For i=1 To 3内层循环语句 Forj=1 To 3改为 For j=1 To 4 ( B)把 sum=0移到 For i=1 To 4和 Forj=1 T
11、o 3之间 ( C)把 sum=sum+score(i, j)改为 sum=sum+score(j, i) ( D)把 sum=sum+score(i, j)改为 sum=score(i, j) 29 在窗体上画一个命令按钮和一个标签,其名称分别为 Command1和 Label1,然后编写如下事件过程: Private Sub Commandl_Click() Counter=0 For i=1 To 4 Forj=6 T0 1 Step一 2 Counter=Counter+1 Nextj Next i Label1 Caption=Str(Counter) End Sub 程序运行后,单
12、击命令按钮,标签中显示的内容是 ( A) 11 ( B) 12 ( C) 16 ( D) 20 30 在窗体上画一个命令按钮,然后编写如下事件过程: Private Sub Commandl_Click() Dim I, Num Randomize Do For I=1 To 1000 Num=Int(Rnd*100): Print Num; Select Case Num Case 12 Exit For Case 58 Exit Do Case 65 68 92 End End Select Next I Loop End Sub 上述事件过程执行后,下列描述中正确的是 ( A) Do循环
13、执行的次数为 1000次 ( B)在 For循环中产生的随机数小于或等于 100 ( C)当所产生的随机数为 12时结束所有循环 ( D)当所产生的随机数为 65、 68或 92时窗体关闭、程序结束 31 运行如下程序 Private Sub Commandl_Click() Dima(5, 5)As Integer For i=1 To 5 Forj=1 To 4 a(i, j)=i*2+j If a(i, j) 7=a(i, j) 7 Then n=n+1 End If Nextj Next Print n End Sub 则 n的值是 ( A) 2 ( B) 3 ( C) 4 ( D)
14、5 32 命令按钮 Commandl的单击事件过程如下: Private Sub Commandl_Click() Dim a(10, 10)As Integer X=0 For i=1 T0 3 Forj=1 To 3 a(i, j)=i*2 Mod j IfxSqr(i)Then Print i End Sub 该程序的功能是 ( A)判断 n是否为素数 ( B)输出 n以内所有的奇数 ( C)输出 n以内所有的偶数 ( D)输出 n以内所有的 素数 39 命令按钮 Command1的事件过程如下: Private Sub Command1_Click() Dim arr(5, 5)As
15、Integer Dim i As Integer,j As Integer For i=1 To 4 Forj=2 To 4 arr(i, j)=i+j Nextj Print arr(1, 3)+arr(3, 4) End Sub 执行上述过程,输出结 果是 ( A) 6 ( B) 7 ( C) 11 ( D) 12 40 有如下程序: Private Sub Commandl_Click() Dim i As Integer,j As Integer, sum As Integer Doj=1 Do sum=sum+j: j=j+1 Printj; Loop Until j3 n=n+2
16、Loop Until n10 Print sum End Sub 运 行上述程序,外层 Do循环执行的次数为 ( A) 4 ( B) 5 ( C) 7 ( D) 10 国家二级 VB机试(控制结构)模拟试卷 17答案与解析 一、选择题 1 【正确答案】 D 【试题解析】 本题中要求分别统计数字 0 9的个数,使用了一个数组 count来存放各个数字的个数。在第一个 For循环中,将数组的各个元素设置为 0,在第二个循环中,依次取出字符串中的每一个字符,判断是不是在 0 9之间,如果在范围内,则应该令对应的数组元素加 1。如果写成 count(i)=count(i)+1,只能顺序的令每一个数 组
17、元素都加 1,只有改写成 count(x)=count(x)+1,让 x作为下标,才能保证让 x对应的数组元素加 1。 【知识模块】 控制结构 2 【正确答案】 C 【试题解析】 组合框的 Text属性将会返回或者设置编辑区中的文本,本题中显示的是 1 10的累加和 55。 【知识模块】 控制结构 3 【正确答案】 C 【试题解析】 本题考查循环, Do Loop Until循环至少会执行一次,该循环是先执行然后判断循环条件。 【知识模块】 控制结构 4 【正确答案】 D 【 试题解析】 本题函数过程的原代码仅适合 a不能被 b整除的两数,而当 a能被b整除时则不适用,如 a=4, b=2,
18、a除以 b的余数为 0,而原代码返回的函数值为2。因此需将语句 While ab改为 While a=b。 【知识模块】 控制结构 5 【正确答案】 D 【试题解析】 本题是简单 While循环,在循环中改变循环变量 x的值,要注意退出循环时 x必然是不会满足循环条件的。本题中循环中 x依次变化为 1、 4、 25。 【知识模块】 控制结构 6 【正确答案】 D 【试题解析】 本题考查循环 。如果输入的 n是偶数,那么在循环体中执行n=n+1,偶数 +1是奇数,循环结束条件 Loop Untiln=1000不会满足,形成死循环;如果输入的 n是奇数,那么循环体内执行 n=n+2,奇数 +2依然
19、是奇数,循环结束条件永远不会满足,也形成死循环。 【知识模块】 控制结构 7 【正确答案】 D 【试题解析】 本题考查的考点是有关 Do型循环的。对于这种循环结构,首先看条件判断在循环体的前面还是后面,如果是先判断条件,则有可能一次也不执行循环体;如果是后判断条件,则无论条件如何至少执行一次循环体。在 Until循环中条件为。 False时执行循环体,条件为 True时退出循环;在 While循环中条件为 True时执行循环体,条件为 False时退出循环,这一点要注意区分清楚。 【知识模块】 控制结构 8 【正确答案】 D 【试题解析】 Vistlal Basic支持的循环结构包括: For
20、.Next循环、 For Each.Next循环、: Do.Loop循环和 While循环。 【知识模块】 控制结构 9 【正确答案】 B 【试题解析】 本题考查的考点是有关 Do型循环的。对于 这种循环结构,首先看条件判断在循环体的前面还是后面,如果是先判断条件,则有可能一次也不执行循环体;如果是后判断条件,则无论条件是什么,至少执行一次循环体。在 Until循环中条件为 False时执行循环体,条件为 True时退出循环;在 While循环中条件为 True时执行循环体,条件为 False时退出循环,这一点要注意区分清楚。本题只需要实际计算一下两次循环中 x和 n值的变化即可容易的得出结果
21、。 【知识模块】 控制结构 10 【正确答案】 B 【试题解析】 Do型循环结构,首先看条件判断在循环体的前 面还是后面,如果是先判断条件,则有可能一次也不执行循环体;如果是后判断条件,则无论条件是什么,至少执行一次循环体。在 Until循环中条件为 False时执行循环体,条件为 True时退出循环;在 While循环中条件为 True时执行循环体,条件为 False时退出循环。本题中使用的是后判断型循环,第一次循环时 v的值为 1,不满足y10,执行 Else分支, x变成 4,此时由于满足 x1而无限循环; D选项由于 i的值从 10开始递减,但是因为每次递减 2,所以 i永远为偶数,不
22、会满足 i=1而无限循环。 【知识模块】 控制结构 17 【正确答案】 C 【试题解析】 Do循环语句 的功能是:当指定的 “循环条件 ”为真或直到指定的 “循环条件 ”变为真之前重复执行循环体。 Do while|UntilLoop 循环是在条件满足的情况下才执行一次循环体,而 DoLoop While|Until 循环不管是否满足条件都先执行一次循环体,然后再判断条件是否成立以决定后续操作。本题的 A选项由于 i的值从 5开始递增,永远不会满足 i0而无限循环; B选项由于 i的值从 5开始递增,永远满足 i=1而无限循环; D选项由于 i的值从 0开始递减,永远满足 i1而无限循环。 【
23、知识模块】 控制结构 18 【正确答案 】 D 【试题解析】 本题中 Do循环的循环变量 i的初值为 1,继续循环的条件是 i6,在每次循环中 i的值加 1,因此循环会执行 5次;在第一次循环中累加 1 2,第二次循环中累加 2 3,第三次循环中累加 3 4 即最后计算的是 1 2+2 3+34+4 5+5 6的值 【知识模块】 控制结构 19 【正确答案】 A 【试题解析】 Do循环语句的功能是:当指定的 “循环条件 ”为真或直到指定的 “循环条件 ”变为真之前重复执行循环体。 Do while|UntilLoop 循环是在条件满足的情况下才执行 一次循环体,而 DoLoop While|U
24、ntil 循环不管是否满足条件都先执行一次循环体,然后再判断条件是否成立以决定后续操作。本题的循环共执行 3次,跳出循环时 N的值为 3, J的值为 21。 【知识模块】 控制结构 20 【正确答案】 B 【试题解析】 在函数 fun中会对传过来的参数 num进行判断,如果不为 0则进行循环,将各位数字乘到一起然后作为函数的返回值。 【知识模块】 控制结构 21 【正确答案】 A 【试题解析】 求素数的基本思路是,用 2到 n 2依次去除要判断的数 n,如 果能整除就将 isprime置为 False代表不是素数;如果 isprime已经为 False,那么循环没有继续执行的必要了,所以应填入
25、 isprime=True,由于是布尔型变量,可以简写为 isprime。 【知识模块】 控制结构 22 【正确答案】 A 【试题解析】 本题实际上是在子过程 subl中对 arr数组进行的赋值工作,形参 d的值为 12, r的值为 2, k的初值为 0;在循环中计算 d除以 2的余数放到数组的第一个元素,整除 2后再除以 2的余数放到第二个元素 以此类推,最后数组air中存放的是 (0、 0、 1、 1),在 Commandl Click()过程中调用完子过程对数组进行赋值以后,逆序输出了数组的值。 【知识模块】 控制结构 23 【正确答案】 B 【试题解析】 本题中是在一个 Do循环中对一
26、个数字进行分解,首先输出该数字整除 10之后再除以 10得到的余数 (即十位上数字 ),然后输出该数除以 10得到的余数 (即个位数字 ),然后将该数去掉十位和个位上的数字以后继续循环,最终依次输出 5、 6、 3、 4、 1、 2。 【知识模块】 控制结构 24 【正确答案】 A 【试题解析】 本题考查的考 点是有关二重循环的。 ForNext 循环语句可提供一个重复执行的语句序列,遵循 “先检查,后执行 ”的规则,执行过程中,循环次数=Int(终值 -初值 )步长 +1。二重循环的内循环语句执行次数等于内外循环次数之积。 【知识模块】 控制结构 25 【正确答案】 B 【试题解析】 本题通
27、过一个嵌套的 For循环为二维数组 a的各元素赋值,该二维数组对应矩阵的主对角线上的元素 (即满足条件 m=n)和副对角线上的元素 (即满足条件 m+n=4)其值为 m+n,即主对角线上的元素从左上至右下依次为 2、 4、 6,副对角线上 的元素均为 4,而其它元素均为 0。 【知识模块】 控制结构 26 【正确答案】 A 【试题解析】 Do型循环结构,首先看条件判断在循环体的前面还是后面,如果是先判断条件,则有可能一次也不执行循环体;如果是后判断条件,则无论条件是什么,至少执行一次循环体。在 Until循环中条件为 False时执行循环体,条件为 True时退出循环;在 While循环中条件
28、为 True时执行循环体,条件为 False时退出循环。本题是一个嵌套的 Do循环,外层循环是后判断条件的 Until型循环,内层循环是先判断条件的 while型循环。根据输入的值 20可判断出三次输出的结果为 2、 2、 5。 【知识模块】 控制结构 27 【正确答案】 B 【试题解析】 本题中有两个二维数组 a和 b,然后用一个二重循环为两个数组赋值,根据每次循环中 i和 i的值不难得出 B为正确答案。 【知识模块】 控制结构 28 【正确答案】 B 【试题解析】 本题考查的考点是有关循环求和和二维数组的。本题要对二维数组的每行进行累加求和,每计算新的一行就应该将累加和变量 sum清零,否
29、则上一行的累加计算结果将会在下一行继续累加,造成结果不正确 。 【知识模块】 控制结构 29 【正确答案】 B 【试题解析】 本题考查的考点是有关循环的。通过观察可以得知,在每次内循环中 Counter的值会增加 1,所以最终结果就是内循环执行的总次数。由于内循环和外循环都是 For循环,所以循环次数一定,外循环共执行 4次,每次外循环中内循环都执行 3次,故内循环执行的总次数为 4*3=12次。 【知识模块】 控制结构 30 【正确答案】 D 【试题解析】 本题考查的考点是有关随机数和退出语句的。在本题中,首先在循环中生成一个随机数,由于 Rnd函数可以生成 0 1开区间的数,所以Int(R
30、nd*100)能够生成 0 99之间的整数,随后对此数进行判断,当随机数为 12时退出内循环;当随机数为 58时退出外循环;当随机数为 65、 68或 92时将会结束整个窗体的运行。本题中的循环次数受随机数控制,所以次数不定。 【知识模块】 控制结构 31 【正确答案】 B 【试题解析】 在二重循环中为二维数组赋初值,每个元素的值均为行号 *2加上列号;在 If语句中进行判断,如果数组元素能被 7整除则令计数器 n加 1,所以整个程序的功能就是统计二维数组中能被 7整除的 数的个数。 【知识模块】 控制结构 32 【正确答案】 B 【试题解析】 本题中使用二重循环为二维数组赋初值,每个元素的值为行号 2然后除以列号的余数;接下来找出数组的最大值。由于列号最大只能为 3,所以余数的最大值为 2。 【知识模块】 控制结构 33 【正确答案】 B 【试题解析】 存窗体模块中使用 Dim声明模块接变量,也可以声明模块级数组;在循环 1中 i从 1到 3, i从 1到 4,无论是访问 b(j, i)还是 a(i, j)均在数组的
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1