1、国家二级 VB机试(控制结构)模拟试卷 15及答案解析(总分:52.00,做题时间:90 分钟)一、选择题(总题数:26,分数:52.00)1.编写如下程序:Private Sub Commandl_Click() Dim m As Integer,n As Integer m=1:n=0 Do While mA.40 18B.40 19C.20 64D.21 642.下列循环中,可以正常结束的是(分数:2.00)A.i=10 Do i=i+1 Loop Until i1B.i=1 Do i=i+1 Loop Until i=10C.i=10 Do i=i+1 Loop While i1D.i
2、=10 Do i=i-2 Loop Until i=13.以下能够正常结束循环操作的程序段是(分数:2.00)A.i=5 Do i=i+1 Loop Until i0B.i=5 Do i=i+2 Loop Until i=1C.i=5 Do While i0 i=i-2 LoopD.i=0 Do While i1 i=i-2 Loop4.窗体上有一个名称为 Commandl的命令按钮,其单击事件过程如下:Private Sub Commandl_Click() Dim s As Double s=0:i=1 Do While i6 s=s+i(i+1):i=i+1 Loop Print sEn
3、d Sub 该事件过程的功能是计算一个表达式的值,该表达式是(分数:2.00)A.1+12+23+34+45B.1+12+23+34+45+56C.12+23+34+45D.12+23+34+45+565.假定有如下程序:Private Sub Form_Click()Dim N As Integer,J As IntegerN=0 J=1Do Until N2 N=N+1:J=J+N*(N+1) LoopPrint N;JEnd Sub 运行程序,单击窗体,输出结果是(分数:2.00)A.3 21B.3 7C.0 1D.3 136.有如下程序:Function fun(ByVal aura
4、As Integer)As Integer Dim k As Integer k=1 num=Abs(num) Do While 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 rEnd Sub程序运行后,单击窗体,在输入对话框中输入 246,输出结果为(分数:2.00)A.120B.48C.24D.607.下面程序的功能是输出 10
5、0以内所有素数:Private Sub Commandl_Click()For n=2 To 100 isprime=True:k=2 Do While k=n2 And_ If n Mod k=0 Then isorime=False k=k+1 Loop If isprime Then Print n Next nEnd Sub为使上面程序可以实现该功能,程序代码中横线处应填写的代码是(分数:2.00)A.isprimeB.Not isprimeC.n100D.n=1008.编写如下程序:Dim hum As Integer,r As Integer,n As Integer,i As I
6、nteger,arr(5)As IntegerPrivate Sub Commandl_Click() num=12:r=2 Call subl(num,r,n) For i=n To 1 Step-1 Print arr(i); Next i End Sub Sub sub1(d As Integer,r As Integer,k As Integer) k=0 Do While d0 k=k+1:arr(k)=d Mod r:d=dr LoopEnd Sub 程序运行后,单击命令按钮 Commandl,输出结果为(分数:2.00)A.1 1 0 0B.0 0 1 1C.0 1 0 1D.1
7、 0 1 09.编写如下程序:Private Sub Commandl_Click()Dim n As Long,s As String n=InputBox(“输入一个数“) Do While n0 Print n10 Mod 10;:Print n Mod 10:n=n100 Loop Print sEnd Sub 程序运行后,单击命令按钮 Commandl,并输入数值 123456,则输出结果为(分数:2.00)A.6 5 4 3 2 1B.5 6 3 4 1 2C.6 4 2 5 3 1D.6 1 5 2 4 310.假定有以下程序段 For i=1 To 3 For j=5 To 1
8、 Step-1 Print i*j Next j Next i则语句 Print i*j的执行次数是(分数:2.00)A.15B.16C.17D.1811.在窗体上画 1个命令按钮,并编写如下事件过程:Private Sub Commandl_Click() Dim a(3,3) For m=1 To 3 For n=1 To 3 If n=m Or n=4-mThen a(m,n)=m+n Else a(m,n)=0 End If Print a(m,n); Next n Print Next mEnd Sub运行程序,单击命令按钮,窗体上显示的内容为(分数:2.00)A.2 0 0 0 4
9、 0 0 0 6B.2 0 4 0 4 0 4 0 6C.2 3 0 3 4 0 0 0 6D.2 0 0 0 4 5 0 5 612.编写如下程序:Private Sub Commandl_Click() Dim num As Integer,k As Integer,n As Integer num=InputBox(“请输入一个正整数:“) k=num n=2 Do Do While num Mod n=0 Prim n:num=numn Loop n=n+1 Loop Until nk2End Sub 程序运行后,单击命令按钮 Commandl,并输入数值 20,则输出结果为(分数:2
10、.00)A.2 2 5B.2 3 4C.2 3 4 5D.2 513.编写如下程序: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) Next j Next i For i=l To 3 For j=1 To 3 Print b(i,j); Next j Print Next i End Sub 程序运行后,单击命令按钮 Commandl,输出结果为(分数:2.00)A.2 3 4 3 4 5
11、4 5 6B.2 4 6 3 6 9 4 8 12C.3 5 7 5 8 11 7 11 15D.4 6 8 7 10 13 10 14 1814.已知在 4行 3列的全局数组 score(4,3)中存放了 4个学生 3门课程的考试成绩(均为整数)。现需要计算每个学生的总分,某人编写程序如下:Option Base 1Private Sub Commandl_Click() Dim sum As Integer sum=0 For i=1 To 4 For j=1 To 3 sum=sum+score(i,j) Nextj Print“第“&i&“个学生的总分是:“;sum Next iEnd
12、 Sub 运行此程序时发现,除第 1个人的总分计算正确外,其他人的总分都是错误的,程序需要修改。以下修改方案中正确的是(分数:2.00)A.把外层循环语句 For i=1 To 4改为 For i=1 To 3内层循环语句 For j=1 To 3改为 For i=1 To 4B.把 sum=0移至 0 For i=1 To 4和 For i=1 To 3之间C.把 sum=sum+score(i,j)改为 sum=sum+score(j,i)D.把 sum=sum+score(i,j)改为 sum=score(i,j)15.在窗体上画一个命令按钮和一个标签,其名称分别为 Command1和
13、Label1,然后编写如下事件过程: Private Sub Commandl_Click()Counter=0 For i=1 To 4 For i=6 To 1 Step-2 Counter=Counter+1 1 Nextj Next i Label1Caption=Str(Counter)End Sub 程序运行后,单击命令按钮,标签中显示的内容是(分数:2.00)A.11B.12C.16D.2016.在窗体上画一个命令按钮,然后编写如下事件过程:Private Sub Commandl_Click() DimI,Num Randomize Do For I=1 To 1000 Num
14、=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 LoopEnd Sub 上述事件过程执行后,下列描述中正确的是(分数:2.00)A.Do循环执行的次数为 1000次B.在 For循环中产生的随机数小于或等于 100C.当所产生的随机数为 12时结束所有循环D.当所产生的随机数为 65、68 或 92时窗体关闭、程序结束17.运行如下程序 Private Sub Commandl_Click() Dim a(5,5)As In
15、teger 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的值是(分数:2.00)A.2B.3C.4D.518.命令按钮 Commandl的单击事件过程如下:Private Sub Commandl_Click() 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 Ifxa(i,j)Then x=a(i,j) Next Next Print x
16、End Sub执行上述事件过程后,窗体上显示的是(分数:2.00)A.1B.2C.3D.419.设有如下程序:Option Base 1Dim a(3,4)As Integer,b(4,3)As IntegerPrivate Sub Commandl_Click() 循环 1 For i=1 To 3 Forj=l To 4 b(j,i)=a(i,j) Next j Next i 循环 2 x=b(1,1) For i=1 To 4 Forj=1 To 3 Print b(i,j); Ifxb(i,j)Then x=b(i,j) Nextj Print Next iEnd Sub程序中的数组
17、a已被赋值。以下关于上述程序的叙述中,正确的是(分数:2.00)A.窗体模块中,不能使用 Dim声明 a、b 数组B.“循环 1”可以正常运行C.“循环 2”中循环变量 i、j 的终值不对,所以不能正常运行D.程序可以正常运行,x 中保存的是数组 b中所有元素中最小的数20.有如下程序:Private Sub Form_Click() Dim s As Integer,p As Integer p=1 For i=1 To 4 For j=1 To i s=s+j Nextj p=p*s Next i Print PEnd Sub程序运行后,单击窗体,则输出结果是(分数:2.00)A.90B.
18、180C.400D.80021.窗体上有 1个名称为 Commandl的命令按钮,事件过程如下:Private Sub Commandl_Click() Dim art_x(5,5)As Integer For i=1 To 3 For j=2 To 4 arr_x(i,j)=i*j Next j Next i Print art_x(2,1);arr_x(3,2);art_x(4,3)End Sub 运行程序,并单击命令按钮,窗体上显示的内容为(分数:2.00)A.0 6 0B.2 6 0C.0 6 12D.2 6 1222.在窗体上画一个名称为 Commandl的命令按钮,并编写如下程序:
19、Option Base 1Private Sub Commandl_Click()Dim a(4,4)For i=1 To 4 For j=1 To 4 a(i,j)=(i-1)*3+j Next j Next i For i=3 To 4 For j=3 To 4 Print a(j,i); Next j Print Next i End Sub 运行程序,单击命令按钮,则输出结果为(分数:2.00)A.6 9 7 10B.7 10 8 11C.8 11 9 12D.9 12 10 1323.编写如下程序:Private Sub Commandl_Click() Dim a(3,3)As I
20、nteger,S As Integer For i=1 To 3 For j=1 To 3 a(i,j)=i*j+i Next i Next i S=0 For i=1 To 3 s=s+a(i,4-i) Next i Print s End Sub程序运行后,单击命令按钮 Commandl,输出结果为(分数:2.00)A.7B.13C.16D.2024.编写如下程序:Private Sub Commandl_Click() Dim i As Integer,j As Integer n=InputBox(“输入一个大于 1的正整数“) For i=2 To n For j=2 To Sqr(
21、i) If i Modj=0 Then Exit For Next j IfjSqr(i)Then Print i Next iEnd Sub 该程序的功能是(分数:2.00)A.判断 n是否为素数B.输出 n以内所有的奇数C.输出 n以内所有的偶数D.输出 n以内所有的素数25.命令按钮 Commandl的事件过程如下:Private Sub Commandl_Click() Dim arr(5,5)As Integer Dim i As Integer,J As Integer For i=1 To 4 For j=2 To 4 arr(i,j)=i+j Nextj Next i Prin
22、t art(1,3)+arr(3,4)End Sub 执行上述过程,输出结果是(分数:2.00)A.6B.7C.11D.1226.有如下程序:Private Sub Commandl_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.5C.7D.10国家二级 VB机试(控制结构)模拟试卷 15答
23、案解析(总分:52.00,做题时间:90 分钟)一、选择题(总题数:26,分数:52.00)1.编写如下程序:Private Sub Commandl_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中,最后一次循环由于不满足 m20 而跳出。2.下列循环中,可以正常结束的是(分数:
24、2.00)A.i=10 Do i=i+1 Loop Until i1B.i=1 Do i=i+1 Loop Until i=10 C.i=10 Do i=i+1 Loop While i1D.i=10 Do i=i-2 Loop Until i=1解析:解析:Do 循环语句的功能是:当指定的“循环条件”为真或直到指定的“循环条件”变为真之前重复执行循环体。Do WhileIuntilLoop 循环是在条件满足的情况下才执行一次循环体,而 DoLoop whileUntil 循环不管是否满足条件都先执行一次循环体,然后再判断条件是否成立以决定后续操作。本题的 A选项由于 i的值从 10开始递增,
25、永远不会满足 i1 而无限循环;C 选项由于 i的值从 10开始递增,永远满足 i1 而无限循环;D 选项由于 i的值从 10开始递减,但是因为每次递减 2,所以 i永远为偶数,不会满足 i=1而无限循环。3.以下能够正常结束循环操作的程序段是(分数:2.00)A.i=5 Do i=i+1 Loop Until i0B.i=5 Do i=i+2 Loop Until i=1C.i=5 Do While i0 i=i-2 Loop D.i=0 Do While i1 i=i-2 Loop解析:解析:Do 循环语句的功能是:当指定的“循环条件”为真或直到指定的“循环条件”变为真之前重复执行循环体。
26、Do WhileIUntilLoop 循环是在条件满足的情况下才执行一次循环体,而 DoLoop whileUntil 循环不管是否满足条件都先执行一次循环体,然后再判断条件是否成立以决定后续操作。本题的 A选项由于 i的值从 5开始递增,永远不会满足 i0 而无限循环;B 选项由于 i的值从 5开始递增,永远满足 i=1而无限循环;D 选项由于 i的值从 0开始递减,永远满足 i1 而无限循环。4.窗体上有一个名称为 Commandl的命令按钮,其单击事件过程如下:Private Sub Commandl_Click() Dim s As Double s=0:i=1 Do While i6
27、 s=s+i(i+1):i=i+1 Loop Print sEnd Sub 该事件过程的功能是计算一个表达式的值,该表达式是(分数:2.00)A.1+12+23+34+45B.1+12+23+34+45+56C.12+23+34+45D.12+23+34+45+56 解析:解析:本题中 Do循环的循环变量 i的初值为 1,继续循环的条件是 i6,在每次循环中 i的值加1,因此循环会执行 5次;在第一次循环中累加 12,第二次循环中累加 23,第三次循环中累加34即最后计算的是 12+23+34+45+56 的值。5.假定有如下程序:Private Sub Form_Click()Dim N A
28、s Integer,J As IntegerN=0 J=1Do Until N2 N=N+1:J=J+N*(N+1) LoopPrint N;JEnd Sub 运行程序,单击窗体,输出结果是(分数:2.00)A.3 21 B.3 7C.0 1D.3 13解析:解析:Do 循环语句的功能是:当指定的“循环条件”为真或直到指定的“循环条件”变为真之前重复执行循环体。Do whileUntilLoop 循环是在条件满足的情况下才执行一次循环体,而 DoLoop WhileUntil 循环不管是否满足条件都先执行一次循环体,然后再判断条件是否成立以决定后续操作。本题的循环共执行 3次,跳出循环时 N的
29、值为 3,J 的值为 21。6.有如下程序:Function fun(ByVal aura As Integer)As Integer Dim k As Integer k=1 num=Abs(num) Do While 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 rEnd Sub程序运行后,单击窗体,在输入对话框中输入 246,
30、输出结果为(分数:2.00)A.120B.48 C.24D.60解析:解析:在函数 fun中会对传过来的参数 num进行判断,如果不为 0则进行循环,将各位数字乘到一起然后作为函数的返回值。7.下面程序的功能是输出 100以内所有素数:Private Sub Commandl_Click()For n=2 To 100 isprime=True:k=2 Do While k=n2 And_ If n Mod k=0 Then isorime=False k=k+1 Loop If isprime Then Print n Next nEnd Sub为使上面程序可以实现该功能,程序代码中横线处应
31、填写的代码是(分数:2.00)A.isprime B.Not isprimeC.n100D.n=100解析:解析:求素数的基本思路是,用 2到 n2 依次去除要判断的数 n,如果能整除就将 isprime置为False代表不是素数:如果 isprime已经为 False,那么循环没有继续执行的必要了,所以应填入isprime=me,由于是布尔型变量,可以简写为 isprime。8.编写如下程序:Dim hum As Integer,r As Integer,n As Integer,i As Integer,arr(5)As IntegerPrivate Sub Commandl_Click(
32、) num=12:r=2 Call subl(num,r,n) For i=n To 1 Step-1 Print arr(i); Next i End Sub Sub sub1(d As Integer,r As Integer,k As Integer) k=0 Do While d0 k=k+1:arr(k)=d Mod r:d=dr LoopEnd Sub 程序运行后,单击命令按钮 Commandl,输出结果为(分数:2.00)A.1 1 0 0 B.0 0 1 1C.0 1 0 1D.1 0 1 0解析:解析:本题实际上是在子过程 sub 1中对跚数组进行的赋值工作,形参 d的值为
33、12,r 的值为2,k 的初值为 0;在循环中计算 d除以 2的余数放到数组的第一个元素,整除 2后再除以 2的余数放到第二个元素以此类推,最后数组 arr中存放的是(0、0、1、1),在 Commandl_Click()过程中调用完子过程对数组进行赋值以后,逆序输出了数组的值。9.编写如下程序:Private Sub Commandl_Click()Dim n As Long,s As String n=InputBox(“输入一个数“) Do While n0 Print n10 Mod 10;:Print n Mod 10:n=n100 Loop Print sEnd Sub 程序运行后
34、,单击命令按钮 Commandl,并输入数值 123456,则输出结果为(分数:2.00)A.6 5 4 3 2 1B.5 6 3 4 1 2 C.6 4 2 5 3 1D.6 1 5 2 4 3解析:解析:本题中是在一个 Do循环中对一个数字进行分解,首先输出该数字整除 10之后再除以 10得到的余数(即十位上数字),然后输出该数除以 10得到的余数(即个位数字),然后将该数去掉十位和个位上的数字以后继续循环,最终依次输出 5、6、3、4、1、2。10.假定有以下程序段 For i=1 To 3 For j=5 To 1 Step-1 Print i*j Next j Next i则语句 P
35、rint i*j的执行次数是(分数:2.00)A.15 B.16C.17D.18解析:解析:本题考查的考点是有关二重循环的。ForNext 循环语句可提供一个重复执行的语句序列,遵循“先检查,后执行”的规则,执行过程中,循环次数=Int(终值初值)步长+1。二重循环的内循环语句执行次数等于内外循环次数之积。11.在窗体上画 1个命令按钮,并编写如下事件过程:Private Sub Commandl_Click() Dim a(3,3) For m=1 To 3 For n=1 To 3 If n=m Or n=4-mThen a(m,n)=m+n Else a(m,n)=0 End If Pr
36、int a(m,n); Next n Print Next mEnd Sub运行程序,单击命令按钮,窗体上显示的内容为(分数:2.00)A.2 0 0 0 4 0 0 0 6B.2 0 4 0 4 0 4 0 6 C.2 3 0 3 4 0 0 0 6D.2 0 0 0 4 5 0 5 6解析:解析:本题通过一个嵌套的 For循环为二维数组 a的各元素赋值,该二维数组对应矩阵的主对角线上的元素(即满足条件 m=n)和副对角线上的元素(即满足条件 m+n=4)其值为 m+n,即主对角线上的元素从左上至右下依次为 2、4、6,副对角线上的元素均为 4,而其它元素均为 0。12.编写如下程序:Pri
37、vate Sub Commandl_Click() Dim num As Integer,k As Integer,n As Integer num=InputBox(“请输入一个正整数:“) k=num n=2 Do Do While num Mod n=0 Prim n:num=numn Loop n=n+1 Loop Until nk2End Sub 程序运行后,单击命令按钮 Commandl,并输入数值 20,则输出结果为(分数:2.00)A.2 2 5 B.2 3 4C.2 3 4 5D.2 5解析:解析:Do 型循环结构,首先看条件判断在循环体的前面还是后面,如果是先判断条件,则有
38、可能一次也不执行循环体;如果是后判断条件。则无论条件是什么,至少执行一次循环体。、在 UntiI循环中条件为 False时执行循环体,条件为 True时退出循环:在 while循环中条件为 True时执行循环体,条件为 False时退出循环。本题是一个嵌套的 Do循环,外层循环是后判断条件的 Until型循环,内层循环是先判断条件的 while型循环。根据输入的值 20可判断出三次输出的结果为 2、2、5。13.编写如下程序:Private Sub Commandl_Click() Dim a(3,3)As Integer,b(3,3)As Integer For i=1 To 3 For j
39、=1 To 3 a(i,j)=i+j:b(i,j)=a(i,j)+i*(j-1) Next j Next i For i=l To 3 For j=1 To 3 Print b(i,j); Next j Print Next i End Sub 程序运行后,单击命令按钮 Commandl,输出结果为(分数:2.00)A.2 3 4 3 4 5 4 5 6B.2 4 6 3 6 9 4 8 12 C.3 5 7 5 8 11 7 11 15D.4 6 8 7 10 13 10 14 18解析:解析:本题中有两个二维数组 a和 b,然后用一个二重循环为两个数组赋值,根据每次循环中 i和j的值不难得
40、出 B为正确答案。14.已知在 4行 3列的全局数组 score(4,3)中存放了 4个学生 3门课程的考试成绩(均为整数)。现需要计算每个学生的总分,某人编写程序如下:Option Base 1Private Sub Commandl_Click() Dim sum As Integer sum=0 For i=1 To 4 For j=1 To 3 sum=sum+score(i,j) Nextj Print“第“&i&“个学生的总分是:“;sum Next iEnd Sub 运行此程序时发现,除第 1个人的总分计算正确外,其他人的总分都是错误的,程序需要修改。以下修改方案中正确的是(分数
41、:2.00)A.把外层循环语句 For i=1 To 4改为 For i=1 To 3内层循环语句 For j=1 To 3改为 For i=1 To 4B.把 sum=0移至 0 For i=1 To 4和 For i=1 To 3之间 C.把 sum=sum+score(i,j)改为 sum=sum+score(j,i)D.把 sum=sum+score(i,j)改为 sum=score(i,j)解析:解析:本题考查的考点是有关循环求和和二维数组的。本题要对二维数组的每行进行累加求和,每计算新的一行就应该将累加和变量 sum清零,否则上一行的累加计算结果将会在下一行继续累加,造成结果不正确
42、。15.在窗体上画一个命令按钮和一个标签,其名称分别为 Command1和 Label1,然后编写如下事件过程: Private Sub Commandl_Click()Counter=0 For i=1 To 4 For i=6 To 1 Step-2 Counter=Counter+1 1 Nextj Next i Label1Caption=Str(Counter)End Sub 程序运行后,单击命令按钮,标签中显示的内容是(分数:2.00)A.11B.12 C.16D.20解析:解析:本题考查的考点是有关循环的。通过观察可以得知,在每次内循环中 Counter的值会增加1,所以最终结果
43、就是内循环执行的总次数。由于内循环和外循环都是 For循环,所以循环次数一定,外循环共执行 4次,每次外循环中内循环都执行 3次,故内循环执行的总次数为 4+3=12次。16.在窗体上画一个命令按钮,然后编写如下事件过程:Private Sub Commandl_Click() DimI,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 LoopEnd S
44、ub 上述事件过程执行后,下列描述中正确的是(分数:2.00)A.Do循环执行的次数为 1000次B.在 For循环中产生的随机数小于或等于 100C.当所产生的随机数为 12时结束所有循环D.当所产生的随机数为 65、68 或 92时窗体关闭、程序结束 解析:解析:本题考查的考点是有关随机数和退出语句的。在本题中,首先在循环中生成一个随机数,由于 Rnd函数可以生成 01 开区间的数,所以 Int(Rnd*100)能够生成 099 之间的整数,随后对此数进行判断,当随机数为 12时退出内循环;当随机数为 58时退出外循环:当随机数为 65、68 或 92时将会结束整个窗体的运行。本题中的循环
45、次数受随机数控制,所以次数不定。17.运行如下程序 Private Sub Commandl_Click() Dim a(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的值是(分数:2.00)A.2B.3 C.4D.5解析:解析:在二重循环中为二维数组赋初值,每个元素的值均为行号*2 加上列号;在 If语句中进行判断,如果数组元素能被 7整除则令计数器 n加 1,所以整个程序的功能就是统计二维数组中能被
46、 7整除的数的个数。18.命令按钮 Commandl的单击事件过程如下:Private Sub Commandl_Click() 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 Ifxa(i,j)Then x=a(i,j) Next Next Print xEnd Sub执行上述事件过程后,窗体上显示的是(分数:2.00)A.1B.2 C.3D.4解析:解析:本题中使用二重循环为二维数组赋初值,每个元素的值为行号2 然后除以列号的余数;接下来找出数组的最大值。由于列号最大只能为 3,所以余数的最大值为
47、2。19.设有如下程序:Option Base 1Dim a(3,4)As Integer,b(4,3)As IntegerPrivate Sub Commandl_Click() 循环 1 For i=1 To 3 Forj=l To 4 b(j,i)=a(i,j) Next j Next i 循环 2 x=b(1,1) For i=1 To 4 Forj=1 To 3 Print b(i,j); Ifxb(i,j)Then x=b(i,j) Nextj Print Next iEnd Sub程序中的数组 a已被赋值。以下关于上述程序的叙述中,正确的是(分数:2.00)A.窗体模块中,不能使
48、用 Dim声明 a、b 数组B.“循环 1”可以正常运行 C.“循环 2”中循环变量 i、j 的终值不对,所以不能正常运行D.程序可以正常运行,x 中保存的是数组 b中所有元素中最小的数解析:解析:在窗体模块中使用 Dim声明模块接变量,也可以声明模块级数组:在循环 1中 i从 1到3,j 从 1到 4,无论是访问 b(j,i)还是 a(i,j)均在数组的范围内,可以正常运行;在循环 2中 b(i,j)的值也在数组范围内,循环可以正常运行;最后 x里面保存的是数组中最大的数。20.有如下程序:Private Sub Form_Click() Dim s As Integer,p As Inte
49、ger p=1 For i=1 To 4 For j=1 To i s=s+j Nextj p=p*s Next i Print PEnd Sub程序运行后,单击窗体,则输出结果是(分数:2.00)A.90B.180C.400D.800 解析:解析:本题是一个二重循环,而且内循环次数根据外循环的循环变量而定。内循环完成累加,内循环结束后将累加和乘到 p中保存起来。在 4次外循环中分别累乘的是 1、4、10、20。21.窗体上有 1个名称为 Commandl的命令按钮,事件过程如下:Private Sub Commandl_Click() Dim art_x(5,5)As Integer For i=1 To 3 For j=2 To 4 arr_x(i,j)=i*j Next j Next i Print art_x(2,1);arr_x(3,2);art_x(4,3)End Sub 运行程序,并单击命令按钮,窗体上显示的内容为(分