1、二级 VISUAL+BASIC-82 (1)及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:100.00)1.设 a、b 都是自然数,为求 a 除以 b 的余数,某人编写了以下函数: Function fun(a As Integer, b As Integer) While ab a=a-b Wend fun=a End Function 在调试时发现函数是错误的。为使函数能产生正确的返回值,应做的修改是(分数:2.50)A.把 a=a-b 改为 a=b-aB.把 a=a-b 改为 a=a/bC.把 While ab 改为 While abD.把 Whi
2、le ab 改为 While a=b2.设有如下事件过程: Private Sub Form_Click() x=0 While x10 x=x+1:x=x*x Wend Print x End Sub 运行程序,单击窗体,输出结果是(分数:2.50)A.16B.19C.20D.253.假定有以下循环结构 Do Until 条件表达式循环体 Loop 则以下正确的描述是(分数:2.50)A.如果“条件表达式”的值是 0,则一次循环体也不执行B.如果“条件表达式”的值不为 0,则至少执行一次循环体C.不论“条件表达式”的值是否为“真”,至少要执行一次循环体D.如果“条件表达式”的值恒为 0,则无
3、限次执行循环体4.以下 Visual Basic 不支持的循环结构是(分数:2.50)A.For.NextB.For Each.NextC.Do.LoopD.Do.End Do5.在窗体上画两个文本框(名称分别为 Text1 和 Text2)和一个命令按钮(名称为 Command1),然后编写如下事件过程: Private Sub Command1_Click() x=0 Do While x50 x=(x+2)*(x+3):n=n+1 Loop Text1.Text=Str(n):Text2.Text=Str(x) End Sub 程序运行后,单击命令按钮,在两个文本框中显示的值分别为(分数
4、:2.50)A.1 和 0B.2 和 72C.3 和 50D.4 和 1686.编写如下程序: Private Sub Command1_Click() Dim x As Integer, y As Integer x=1:y=1 Do y=x*y If y10 Then Exit Do Else x=x+3 End If LoopUntil x=10 Print x; y End Sub 程序运行后,单击命令按钮 Command1,输出结果为(分数:2.50)A.1 1B.4 1C.4 2D.7 287.编写如下程序: Private Sub Command1_Click() Dim n A
5、s Long, s As String n=InputBox(“输入一个数“) Do While n0 s=s J End Sub 运行程序,单击窗体,输出结果是(分数:2.50)A.3 21B.3 7C.0 1D.3 1316.有如下程序: Function fun(ByVal num As Integer)As Integer Dimk As Integerk=1 num=Abs(num) Do While num k=k*(num Mod 10):num=num/10 Loop fun=k End Function Private Sub Form_Click() Dim n As In
6、teger, r As Integer n=InputBox(“请输入一个数:“):n=Int(n):r=fun(n):Print r End Sub 程序运行后,单击窗体,在输入对话框中输入 246,输出结果为(分数:2.50)A.120B.48C.24D.6017.下面程序的功能是输出 100 以内所有素数: Private Sub Command1_Click() For n=2 To 100 isprime=True:k=2 Do Whilek=n/2 And _ If n Mod k=0 Then isprime=False k=k+1 Loop If isprime Then Pr
7、int n Next n End Sub 为使上面程序可以实现该功能,程序代码中横线处应填写的代码是(分数:2.50)A.isprimeB.Not isprimeC.n100D.n=10018.编写如下程序: Dim num As Integer, r As Integer, n As Integer, i As Integer, arr (5) As Integer Private Sub Command1_Click() num=12:r=2 Call sub1(num, r, n) For i=n To 1 Step-1 Print arr(i); Next i End Sub Sub
8、sub 1(d As Integer, r As Integer, k As Integer) k=0 Do While d0 k=k+1:arr(k)=d Mod r:d=d/r Loop End Sub 程序运行后,单击命令按钮 Command1,输出结果为(分数:2.50)A.1 1 0 0B.0 0 1 1C.0 1 0 1D.1 0 1 019.编写如下程序: Private Sub Command1_Click() Dim n As Long, s As String n=InputBox(“输入一个数“) Do While n0 Printn/10 Mod 10; :Print
9、n Mod 10; :n=n/100 Loop Print s End Sub 程序运行后,单击命令按钮 Command1,并输入数值 123456,则输出结果为(分数:2.50)A.6 5 4 3 2 1B.5 6 3 4 1 2C.6 4 2 5 3 1D.6 1 5 2 4 320.假定有以下程序段 For i=1 To 3 For i=5 To 1 Step-1 Print i*j Next j Next i 则语句 Printi*j 的执行次数是(分数:2.50)A.15B.16C.17D.1821.在窗体上画 1 个命令按钮,并编写如下事件过程: Private Sub Comma
10、nd1_Click() Dim a(3, 3) For m=1 To 3 For n=1 To 3 Ifn=m Or n=4-m Then a(m, n)=m+n Else a(m, n)=0 End If Print a(m, n); Next n Print Next m End Sub 运行程序,单击命令按钮,窗体上显示的内容为(分数:2.50)A.2 0 0 0 4 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 622.编写如下程序: Private Sub Command1_Click() Dim num
11、 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 nk/2 End Sub 程序运行后,单击命令按钮 Command1,并输入数值 20,则输出结果为(分数:2.50)A.2 2 5B.2 3 4C.2 3 4 5D.2 523.编写如下程序: Private Sub Command1_Click() Dim a(3, 3) As Integer, b(3, 3) A
12、s 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=1 To 3 For j=1 To 3 Print b(i, j); Next j Print Next i End Sub 程序运行后,单击命令按钮 Command1,输出结果为(分数:2.50)A.2 3 4 3 4 5 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 1824.已知在 4 行 3 列的全局数组 sco
13、re(4,3)中存放了 4 个学生 3 门课程的考试成绩(均为整数)。现需要计算每个学生的总分,某人编写程序如下: Option Base 1 Private Sub Command1_Click() Dim sum As Integer sum=0 For i=1 To 4 For j=1 To 3 sum=sum+score(i, j) Next j Print“第“ sum Next i End Sub 运行此程序时发现,除第 1 个人的总分计算正确外,其他人的总分都是错误的,程序需要修改。以下修改方案中正确的是(分数:2.50)A.把外层循环语句 For i=1 To 4 改为 For
14、 i=1 To 3 内层循环语句 For j=1 To 3 改为 For j=1 To 4B.把 sum=0 移到 For i=1 To 4 和 For j=1 To 3 之间C.把 sum=sum+score(i,j)改为 sum=sum+score(j,i)D.把 sum=sum+score(i,j)改为 sum=score(i,j)25.在窗体上画一个命令按钮和一个标签,其名称分别为 Command1 和 Label1,然后编写如下事件过程: Private Sub Command1_Click() Counter=0 For i=1 To 4 For j=6 To 1 Step-2 C
15、ounter=Counter+1 Next j Next i Label1.Caption=Str(Counter) End Sub 程序运行后,单击命令按钮,标签中显示的内容是(分数:2.50)A.11B.12C.16D.2026.在窗体上画一个命令按钮,然后编写如下事件过程: Private Sub Command1_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,
16、92 End End Select Next I Loop End Sub 上述事件过程执行后,下列描述中正确的是(分数:2.50)A.Do 循环执行的次数为 1000 次B.在 For 循环中产生的随机数小于或等于 100C.当所产生的随机数为 12 时结束所有循环D.当所产生的随机数为 65、68 或 92 时窗体关闭、程序结束27.运行如下程序 Private Sub Command1_Click() Dim a(5, 5)As Integer For i=1 To 5 For j=1 To 4 a(i, j)=i*2+j If a(i, j)/7=a(i, j)/7 Then n=n+
17、1 End If Next j Next Print n End Sub 则 n 的值是(分数:2.50)A.2B.3C.4D.528.命令按钮 Command1 的单击事件过程如下: Private Sub Command1_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 If xa(i, j) Then x=a(i, j) Next Next Print x End Sub 执行上述事件过程后,窗体上显示的是(分数:2.50)A.1B.2C.3D.429.设有如下程序: Opti
18、on Base 1 Dim a(3, 4)As Integer, b(4, 3) As Integer Private Sub Command1_Click() “循环 1 For i=1 To 3 For i=1 To 4 b(j, i)=a(i, j) Next j Next i “循环 2 x=b(1, 1) For i=1 To 4 For j=1 To 3 Print b(i, j); If xb(i, j) Then x=b(i, j) Next j Print Next i End Sub 程序中的数组 a 已被赋值。以下关于上述程序的叙述中,正确的是(分数:2.50)A.窗体模
19、块中,不能使用 Dim 声明 a、b 数组B.“循环 1”可以正常运行C.“循环 2”中循环变量 i、j 的终值不对,所以不能正常运行D.程序可以正常运行,x 中保存的是数组 b 中所有元素中最小的数30.有如下程序: Private Sub Form_Click() Dim s As Integer, p As Integer p=1 For i=1 To 4 For j=1 To i s=sj Next j p=p*s Next i Print p End Sub 程序运行后,单击窗体,则输出结果是(分数:2.50)A.90B.180C.400D.80031.窗体上有 1 个名称为 Com
20、mand1 的命令按钮,事件过程如下: Private Sub Command1_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 arr_x(2, 1); arr_x(3, 2); arr_x(4, 3) End Sub 运行程序,并单击命令按钮,窗体上显示的内容为(分数:2.50)A.0 6 0B.2 6 0C.0 6 12D.2 6 1232.在窗体上画一个名称为 Command1 的命令按钮,并编写如下程序: Option Base 1 Priv
21、ate Sub Command1_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.50)A.6 9 7 10B.7 10 8 11C.8 11 9 12D.9 12 10 1333.编写如下程序: Private Sub Command1_Click() Dim a(3, 3) As Integer, s
22、 As Integer For i=1 To 3 For j=1 To 3 a(i, j)=i*j+i Next j Next i s=0 For i=1 To 3 s=s+a(i, 4-i) Next i Print s End Sub 程序运行后,单击命令按钮 Command1,输出结果为(分数:2.50)A.7B.13C.16D.2034.编写如下程序: Private Sub Command1_Click() Dim i As Integer, j As Integer n=InputBox(“输入一个大于 1 的正整数“) For i=2 To n For j=2 To Sqr(i)
23、 If i Mod j=0 Then Exit For Next j If jSqr(i) Then Print i Next i End Sub 该程序的功能是(分数:2.50)A.判断 n 是否为素数B.输出 n 以内所有的奇数C.输出 n 以内所有的偶数D.输出 n 以内所有的素数35.命令按钮 Command1 的事件过程如下: Private Sub Command1_Click() Dim art(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 Next j
24、 Next i Print arr(1, 3)+arr(3, 4) End Sub 执行上述过程,输出结果是(分数:2.50)A.6B.7C.11D.1236.有如下程序: 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 Print j; Loop Until j3 n=n+2 Loop Until n10 Print sum End Sub 运行上述程序,外层 Do 循环执行的次数为(分数:2.50)A.4B.5C.7D.1037
25、.设有如下事件过程: Private Sub Command1_Click() For i=1 To 5 j=1 Do Print“*“j=j-1 Loop Until j=0 Next i End Sub 运行程序,输出“*”的个数是(分数:2.50)A.5B.15C.20D.2538.设有如下事件过程: 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=0 To n m=0 For j=0 To n If a(i)=a(j) Then m=m
26、+1 End If Next j If mx Then x=m:b=a(i) End If Next i Print b End Sub 运行程序,输出是(分数:2.50)A.2B.3C.5D.939.窗体上有一个名称为 Command1 的命令按钮,其单击事件过程如下: Private Sub Command1_Click() For i=3 To 1 Step-1 Sum=0 For i=1 To i Sum=Sum+i*j Next Next Print Sum End Sub 运行程序时,单击命令按钮,则窗体上显示的是(分数:2.50)A.1B.6C.18D.2540.窗体上有一个名称
27、为 Command1 的命令按钮,编写如下事件过程: Private Sub Command1_Click() i=0 Do While i6 For j=1 To i n=n+1 Next i=i+1 Loop Print n End Sub 运行程序,单击命令按钮时,窗体上显示的是(分数:2.50)A.10B.15C.16D.21二级 VISUAL+BASIC-82 (1)答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:100.00)1.设 a、b 都是自然数,为求 a 除以 b 的余数,某人编写了以下函数: Function fun(a As Inte
28、ger, b As Integer) While ab a=a-b Wend fun=a End Function 在调试时发现函数是错误的。为使函数能产生正确的返回值,应做的修改是(分数:2.50)A.把 a=a-b 改为 a=b-aB.把 a=a-b 改为 a=a/bC.把 While ab 改为 While abD.把 While ab 改为 While a=b 解析:解析 本题函数过程的原代码仅适合 a 不能被 b 整除的两数,而当 a 能被 b 整除时则不适用,如a=4,b=2,a 除以 b 的余数为 0,而原代码返回的函数值为 2。因此需将语句 While ab 改为 While
29、a=b。2.设有如下事件过程: Private Sub Form_Click() x=0 While x10 x=x+1:x=x*x Wend Print x End Sub 运行程序,单击窗体,输出结果是(分数:2.50)A.16B.19C.20D.25 解析:解析 本题是简单 While 循环,在循环中改变循环变量 x 的值,要注意退出循环时 x 必然是不会满足循环条件的。本题中循环中 x 依次变化为 1、4、25。3.假定有以下循环结构 Do Until 条件表达式循环体 Loop 则以下正确的描述是(分数:2.50)A.如果“条件表达式”的值是 0,则一次循环体也不执行B.如果“条件表
30、达式”的值不为 0,则至少执行一次循环体C.不论“条件表达式”的值是否为“真”,至少要执行一次循环体D.如果“条件表达式”的值恒为 0,则无限次执行循环体 解析:解析 本题考查的考点是有关 Do 型循环的。对于这种循环结构,首先看条件判断在循环体的前面还是后面,如果是先判断条件,则有可能一次也不执行循环体;如果是后判断条件,则无论条件如何至少执行一次循环体。在 Until 循环中条件为 False 时执行循环体,条件为 True 时退出循环;在 While 循环中条件为 True 时执行循环体,条件为 False 时退出循环,这一点要注意区分清楚。4.以下 Visual Basic 不支持的循
31、环结构是(分数:2.50)A.For.NextB.For Each.NextC.Do.LoopD.Do.End Do 解析:解析 Visual Basic 支持的循环结构包括:For.Next 循环、For EachNext 循环、DoLoop循环和 While 循环。5.在窗体上画两个文本框(名称分别为 Text1 和 Text2)和一个命令按钮(名称为 Command1),然后编写如下事件过程: Private Sub Command1_Click() x=0 Do While x50 x=(x+2)*(x+3):n=n+1 Loop Text1.Text=Str(n):Text2.Tex
32、t=Str(x) End Sub 程序运行后,单击命令按钮,在两个文本框中显示的值分别为(分数:2.50)A.1 和 0B.2 和 72 C.3 和 50D.4 和 168解析:解析 本题考查的考点是有关 Do 型循环的。对于这种循环结构,首先看条件判断在循环体的前面还是后面,如果是先判断条件,则有可能一次也不执行循环体;如果是后判断条件,则无论条件是什么,至少执行一次循环体。在 Until 循环中条件为 False 时执行循环体,条件为 True 时退出循环;在 While循环中条件为 True 时执行循环体,条件为 False 时退出循环,这一点要注意区分清楚。本题只需要实际计算一下两次循
33、环中 x 和 n 值的变化即可容易的得出结果。6.编写如下程序: Private Sub Command1_Click() Dim x As Integer, y As Integer x=1:y=1 Do y=x*y If y10 Then Exit Do Else x=x+3 End If LoopUntil x=10 Print x; y End Sub 程序运行后,单击命令按钮 Command1,输出结果为(分数:2.50)A.1 1B.4 1 C.4 2D.7 28解析:解析 Do 型循环结构,首先看条件判断在循环体的前面还是后面,如果是先判断条件,则有可能一次也不执行循环体;如果是
34、后判断条件,则无论条件是什么,至少执行一次循环体。在 Until 循环中条件为 False 时执行循环体,条件为 True 时退出循环;在 While 循环中条件为 True 时执行循环体,条件为False 时退出循环。本题中使用的是后判断型循环,第一次循环时 y 的值为 1,不满足 y10,执行 Else分支,x 变成 4,此时由于满足 x=10 所以结束循环。7.编写如下程序: Private Sub Command1_Click() Dim n As Long, s As String n=InputBox(“输入一个数“) Do While n0 s=s J End Sub 运行程序,
35、单击窗体,输出结果是(分数:2.50)A.3 21 B.3 7C.0 1D.3 13解析:解析 Do 循环语句的功能是:当指定的“循环条件”为真或直到指定的“循环条件”变为真之前重复执行循环体。Do While|UntilLoop 循环是在条件满足的情况下才执行一次循环体,而 DoLoop While|Until 循环不管是否满足条件都先执行一次循环体,然后再判断条件是否成立以决定后续操作。本题的循环共执行 3 次,跳出循环时 N 的值为 3,J 的值为 21。16.有如下程序: Function fun(ByVal num As Integer)As Integer Dimk As Inte
36、gerk=1 num=Abs(num) Do While num 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,输出结果为(分数:2.50)A.120B.48 C.24D.60解析:解析 在函数 fun 中会对传过来的参数 num 进行判断,如果不为 0 则进行循环,
37、将各位数字乘到一起然后作为函数的返回值。17.下面程序的功能是输出 100 以内所有素数: Private Sub Command1_Click() For n=2 To 100 isprime=True:k=2 Do Whilek=n/2 And _ If n Mod k=0 Then isprime=False k=k+1 Loop If isprime Then Print n Next n End Sub 为使上面程序可以实现该功能,程序代码中横线处应填写的代码是(分数:2.50)A.isprime B.Not isprimeC.n100D.n=100解析:解析 求素数的基本思路是,用
38、 2 到 n/2 依次去除要判断的数 n,如果能整除就将 isprime 置为False 代表不是素数;如果 isprime 已经为 False,那么循环没有继续执行的必要了,所以应填入isprime=True,由于是布尔型变量,可以简写为 isprime。18.编写如下程序: Dim num As Integer, r As Integer, n As Integer, i As Integer, arr (5) As Integer Private Sub Command1_Click() num=12:r=2 Call sub1(num, r, n) For i=n To 1 Step-
39、1 Print arr(i); Next i End Sub Sub sub 1(d As Integer, r As Integer, k As Integer) k=0 Do While d0 k=k+1:arr(k)=d Mod r:d=d/r Loop End Sub 程序运行后,单击命令按钮 Command1,输出结果为(分数:2.50)A.1 1 0 0 B.0 0 1 1C.0 1 0 1D.1 0 1 0解析:解析 本题实际上是在子过程 sub1 中对 arr 数组进行的赋值工作,形参 d 的值为 12,r 的值为2,k 的初值为 0;在循环中计算 d 除以 2 的余数放到数组
40、的第一个元素,整除 2 后再除以 2 的余数放到第二个元素以此类推,最后数组 arr 中存放的是(0、0、1、1),在 Command1_Click()过程中调用完子过程对数组进行赋值以后,逆序输出了数组的值。19.编写如下程序: Private Sub Command1_Click() Dim n As Long, s As String n=InputBox(“输入一个数“) Do While n0 Printn/10 Mod 10; :Print n Mod 10; :n=n/100 Loop Print s End Sub 程序运行后,单击命令按钮 Command1,并输入数值 123
41、456,则输出结果为(分数:2.50)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。20.假定有以下程序段 For i=1 To 3 For i=5 To 1 Step-1 Print i*j Next j Next i 则语句 Printi*j 的执行次数是(分数:2.5
42、0)A.15 B.16C.17D.18解析:解析 本题考查的考点是有关二重循环的。ForNext 循环语句可提供一个重复执行的语句序列,遵循“先检查,后执行”的规则,执行过程中,循环次数=Int(终值-初值)/步长+1。二重循环的内循环语句执行次数等于内外循环次数之积。21.在窗体上画 1 个命令按钮,并编写如下事件过程: Private Sub Command1_Click() Dim a(3, 3) For m=1 To 3 For n=1 To 3 Ifn=m Or n=4-m Then a(m, n)=m+n Else a(m, n)=0 End If Print a(m, n); N
43、ext n Print Next m End Sub 运行程序,单击命令按钮,窗体上显示的内容为(分数:2.50)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。22.编写如下程序: Private Sub
44、 Command1_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 nk/2 End Sub 程序运行后,单击命令按钮 Command1,并输入数值 20,则输出结果为(分数:2.50)A.2 2 5 B.2 3 4C.2 3 4 5D.2 5解析:解析 Do 型循环结构,首先看条件判断在循环体的前面还是后面,如果是先判断条件,则有可能
45、一次也不执行循环体;如果是后判断条件,则无论条件是什么,至少执行一次循环体。在 Until 循环中条件为 False 时执行循环体,条件为 True 时退出循环;在 While 循环中条件为 True 时执行循环体,条件为False 时退出循环。本题是一个嵌套的 Do 循环,外层循环是后判断条件的 Until 型循环,内层循环是先判断条件的 While 型循环。根据输入的值 20 可判断出三次输出的结果为 2、2、5。23.编写如下程序: Private Sub Command1_Click() Dim a(3, 3) As Integer, b(3, 3) As Integer For i=
46、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=1 To 3 For j=1 To 3 Print b(i, j); Next j Print Next i End Sub 程序运行后,单击命令按钮 Command1,输出结果为(分数:2.50)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,然后用一个二重循环为两个数组赋
47、值,根据每次循环中 i和 j 的值不难得出 B 为正确答案。24.已知在 4 行 3 列的全局数组 score(4,3)中存放了 4 个学生 3 门课程的考试成绩(均为整数)。现需要计算每个学生的总分,某人编写程序如下: Option Base 1 Private Sub Command1_Click() Dim sum As Integer sum=0 For i=1 To 4 For j=1 To 3 sum=sum+score(i, j) Next j Print“第“ sum Next i End Sub 运行此程序时发现,除第 1 个人的总分计算正确外,其他人的总分都是错误的,程序需
48、要修改。以下修改方案中正确的是(分数:2.50)A.把外层循环语句 For i=1 To 4 改为 For i=1 To 3 内层循环语句 For j=1 To 3 改为 For j=1 To 4B.把 sum=0 移到 For i=1 To 4 和 For j=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 清零,否则上一行的累
49、加计算结果将会在下一行继续累加,造成结果不正确。25.在窗体上画一个命令按钮和一个标签,其名称分别为 Command1 和 Label1,然后编写如下事件过程: Private Sub Command1_Click() Counter=0 For i=1 To 4 For j=6 To 1 Step-2 Counter=Counter+1 Next j Next i Label1.Caption=Str(Counter) End Sub 程序运行后,单击命令按钮,标签中显示的内容是(分数:2.50)A.11B.12 C.16D.20解析:解析 本题考查的考点是有关循环的。通过观察可以得知,在每次内循环中 Counter 的值会增加1,所以最终结果就是内循环执行的总次数。由于内循环和外循环都是 For 循环,所以循环次数一定,外循环共执行 4 次,每次外循环中内循环都执行 3 次,故内循环执行的总次数为 4*3=12 次。26.在窗体上画一个命令按钮,然后编写如下事件过程: Private Sub Command1_Click() Dim I, N