1、国家二级 VB机试(控制结构)模拟试卷 12及答案解析(总分:54.00,做题时间:90 分钟)一、选择题(总题数:27,分数:54.00)1.窗体上有 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 Wbile i=sLen2 temp=temp+
2、Mid(s,i,1)+Mid(s,sLen-i+1,1) i=i+1 Loop pick_str=temp End Function 运行程序,单击命令按钮,并在输入对话框中输入“basic”,则在窗体上显示的内容为(分数:2.00)A.bcaiB.cbiaC.bcaisD.cbias2.编写如下程序: Private Sub Command1_Click() Dim m As Integer,n As Integer m=1:n=0 Do While mA.40 18B.40 19C.20 64D.21 643.下列循环中,可以正常结束的是(分数:2.00)A.i=10 Do i=i+1 L
3、oop Until i1D.i=10 Do i=i2 Loop Until i=14.以下能够正常结束循环操作的程序段是(分数:2.00)A.i=5 Do i=i+1 Loop Until i0 i=i-2 LoopD.i=0 Do While i5.窗体上有一个名称为 Command1的命令按钮,其单击事件过程如下: Private Sub Command1_Click() Dim s As Double s=0:i=1 Do While i6 s=s+i(i+1):i=i+1 Loop Print s End Sub 该事件过程的功能是计算一个表达式的值,该表达式是(分数:2.00)A.1
4、+12+23+34+45B.1+12+23+34+45+56C.12+23+34+45D.12+23+34+45+566.假定有如下程序: Private Sub Form Click() Dim N As Integer,J As Integer N=0 J=l Do Until N2 N=N+1:J=J+N*(N+1) Loop Print N:J End Sub 运行程序,单击窗体,输出结果是(分数:2.00)A.3 21B.3 7C.0 1D.3 137.有如下程序: Function fun(ByVal nuin As Integer)As Integer Dim k As Inte
5、ger k=1 num=Abs(num) Do Wbile num k=k*(num Mod 10):num=num10 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,输出结果为(分数:2.00)A.120B.48C.24D.608.下面程序的功能是输出 100以内所有素数: Private Sub Command1_Cli
6、ck() For n=2 To 100 isprime=True:k=2 Do While k=n2 And If n Mod k=0 Then isprime=False k=k+1 Loop If isprime Then Print n Next n End Sub 为使上面程序可以实现该功能,程序代码中横线处应填写的代码是(分数:2.00)A.isprimeB.Not isprimeC.n0 k=k+1:arr(k)=d Mod r:d=dr Loop End Sub 程序运行后,单击命令按钮 Command1,输出结果为(分数:2.00)A.1 1 0 0B.0 0 1 1C.0 1
7、 0 1D.1 0 1 010.编写如下程序: Private Sub Command1_Click() Dim n As Long,s As String n=InputBox(“输入一个数“) Do While nSqr(i)Then Print i Next i End Sub 该程序的功能是(分数:2.00)A.判断 n是否为素数B.输出 n以内所有的奇数C.输出 n以内所有的偶数D.输出 n以内所有的素数26.命令按钮 Command1的事件过程如下: Private Sub Command1_Click() Dim arr(5,5)As Integer Dim i As Integ
8、er,j As Integer For i=1 To 4 Forj=2 To 4 arr(i,j)=i+j Nextj Next i Print art(1,3)+arr(3,4) End Sub 执行上述过程,输出结果是(分数:2.00)A.6B.7C.11D.l 227.有如下程序: Private Sub Command1_Click() Dim i As Integer,j As Integer,sum As Integer n=1 Do j=1 Do sum=sum+j:j=j+1 Printj; Loop Until j3 n=n+2 Loop Until n10 Print su
9、m End Sub 运行上述程序,外层 Do循环执行的次数为(分数:2.00)A.4B.5C.7D.10国家二级 VB机试(控制结构)模拟试卷 12答案解析(总分:54.00,做题时间:90 分钟)一、选择题(总题数:27,分数:54.00)1.窗体上有 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
10、 temp=“:i=1:sLen=Len(s) Do Wbile i=sLen2 temp=temp+Mid(s,i,1)+Mid(s,sLen-i+1,1) i=i+1 Loop pick_str=temp End Function 运行程序,单击命令按钮,并在输入对话框中输入“basic”,则在窗体上显示的内容为(分数:2.00)A.bcai B.cbiaC.bcaisD.cbias解析:解析:本题的函数中使用了 Do循环循环冬件是 i=sLen2;由于字符串的长度为 5,所以循环会执行两次:在每次循环中使用 Mid函数依次取得字符串的第一个字符、最后一个字符、第二个字符、倒数第二个字符。
11、2.编写如下程序: Private Sub Command1_Click() Dim m As Integer,n As Integer m=1:n=0 Do While mA.40 18 B.40 19C.20 64D.21 64解析:解析:本题的 Do循环是一个先判断条件型的循环,在循环中将循环变量 m的值每次改变。分析循环可看出,在 4次循环中 m的值分别为 1、4、13、40,而只有前三次循环中的 m值被累加到 n中,最后一次循环由于不满足 m1D.i=10 Do i=i2 Loop Until i=1解析:解析:Do 循环语句的功能是:当指定的“循环条件”为真或直到指定的“循环条件”
12、变为真之前重复执行循环体。Do WhileIuntilLoop 循环是在条件满足的情况下才执行一次循环体,而 DoLoop while|Until循环不管是否满足条件都先执行一次循环体,然后再判断条件是否成立以决定后续操作。本题的 A选项由于 i的值从 10开始递增,永远不会满足 il而无限循环:D 选项由于 i的值从 10开始递减,但是因为每次递减 2,所以 i永远为偶数,不会满足 i=1而无限循环。4.以下能够正常结束循环操作的程序段是(分数:2.00)A.i=5 Do i=i+1 Loop Until i0 i=i-2 Loop D.i=0 Do While i解析:解析:Do 循环语句
13、的功能是:当指定的“循环条件”为真或直到指定的“循环条件”变为真之前重复执行循环体。Do while|UntilLoop 循环是在条件满足的情况下才执行一次循环体,而 DoLoop While|Until循环不管是否满足条件都先执行一次循环体,然后再判断条件是否成立以决定后续操作。本题的 A选项由于 i的值从 5开始递增,永远不会满足 i2 N=N+1:J=J+N*(N+1) Loop Print N:J End Sub 运行程序,单击窗体,输出结果是(分数:2.00)A.3 21 B.3 7C.0 1D.3 13解析:解析:Do 循环语句的功能是:当指定的“循环条件”为真或直到指定的“循环条
14、件”变为真之前重复执行循环体。Do whileluntilLoop 循环是在条件满足的情况下才执行一次循环体,而 DoLoop WhilelUntil循环不管是否满足条件都先执行一次循环体,然后再判断条件是否成立以决定后续操作。本题的循环共执行 3次,跳出循环时 N的值为 3,J 的值为 2l。7.有如下程序: Function fun(ByVal nuin As Integer)As Integer Dim k As Integer k=1 num=Abs(num) Do Wbile num k=k*(num Mod 10):num=num10 Loop fun=k End Function
15、 Private Sub Form_Click() Dim n As Integer,r As Integer n=InputBox(“请输入一个数:“):n=Int(n):r=fun(n):Print r End Sub 程序运行后,单击窗体,在输入对话框中输入 246,输出结果为(分数:2.00)A.120B.48 C.24D.60解析:解析:在函数 fun中会对传过来的参数 num进行判断,如果不为 0则进行循环,将各位数字乘到一起然后作为函数的返回值。8.下面程序的功能是输出 100以内所有素数: Private Sub Command1_Click() For n=2 To 100
16、isprime=True:k=2 Do While k=n2 And If n Mod k=0 Then isprime=False k=k+1 Loop If isprime Then Print n Next n End Sub 为使上面程序可以实现该功能,程序代码中横线处应填写的代码是(分数:2.00)A.isprime B.Not isprimeC.n0 k=k+1:arr(k)=d Mod r:d=dr Loop End Sub 程序运行后,单击命令按钮 Command1,输出结果为(分数:2.00)A.1 1 0 0 B.0 0 1 1C.0 1 0 1D.1 0 1 0解析:解析
17、:本题实际上是在子过程 subl中对 arr数组进行的赋值工作,形参 d的值为 12,r 的值为2,k 的初值为 0;在循环中计算 d除以 2的余数放到数组的第一个元素,整除 2后再除以 2的余数放到第二个元素以此类推,最后数组 arr中存放的是(0、0、1、1),在 Command1_Click()过程中调用完子过程对数组进行赋值以后,逆序输出了数组的值。10.编写如下程序: Private Sub Command1_Click() Dim n As Long,s As String n=InputBox(“输入一个数“) Do While nSqr(i)Then Print i Next
18、i End Sub 该程序的功能是(分数:2.00)A.判断 n是否为素数B.输出 n以内所有的奇数C.输出 n以内所有的偶数D.输出 n以内所有的素数 解析:解析:本题中的外循环是从 2循环到 n,然后进入内循环,在内循环中依次判断 i能否被 j整除,若能整除则退出内循环;内循环结束后进行判断,如果是中途退出内循环的则必然不满足 iSqr(i),不会输出 i的值;只有 i不能被任何一个 j整除的情况下才会输出 i的值,即判断 i是不是素数,只有素数才输出。26.命令按钮 Command1的事件过程如下: Private Sub Command1_Click() Dim arr(5,5)As
19、Integer Dim i As Integer,j As Integer For i=1 To 4 Forj=2 To 4 arr(i,j)=i+j Nextj Next i Print art(1,3)+arr(3,4) End Sub 执行上述过程,输出结果是(分数:2.00)A.6B.7C.11 D.l 2解析:解析:本题中首先在一个二重循环中给二维数组 arr的部分元素赋值,循环结束后输出两个数组元素的和,根据题意 arr(1,3)+art(3,4)=4+7=11。27.有如下程序: Private Sub Command1_Click() Dim i As Integer,j As Integer,sum As Integer n=1 Do j=1 Do sum=sum+j:j=j+1 Printj; Loop Until j3 n=n+2 Loop Until n10 Print sum End Sub 运行上述程序,外层 Do循环执行的次数为(分数:2.00)A.4B.5 C.7D.10解析:解析:外循环的控制条件为 n10,即 n10的时候结束循环:在每次内循环中 j都会自加,j3 的时候退出内循环,即每次外循环中内循环都会执行 3次;由于内循环没有改变 n的值,而在外循环中 n的值自加 2,所以外循环共循环 5次。