1、国家二级 VB机试(数组)模拟试卷 3及答案与解析 一、选择题 1 语句 Dim a(-3 To 4,3 To 6)As Integer定义的数组的元素个数是 ( A) 18 ( B) 28 ( C) 21 ( D) 32 2 设有如下数组定义语句: Dim a(-1 To 4,3)As Integer 以下叙述中正确的是 ( A) a数组有 18个数组元素 ( B) a数组有 20个数组元素 ( C) a数组有 24个数组元素 ( D)语法有错 3 下列数组定义中错误的是 ( A) Dim a(-5 To -3) ( B) Dim a(3 To 5) ( C) Dim a(-3 To -5)
2、 ( D) Dim a(-3 To 3) 4 设有如下声明语句 Option Base1 Dim arr(2,-1 To 5)As Integer 则数组 arr中数组元素的个数是 ( A) 10 ( B) 12 ( C) 14 ( D) 21 5 设有下面的程序段: x=InputBox(“请输入一个整数 “) ReDim a(x) For k=x To 0 Step-1 a(k)=k Next k 一般,在这段程序之前应先进行数组 a的定义。 下面定义语句中正确的是 ( A) Dim a(100)As Integer ( B) Dim a() As Integer ( C) Dim a A
3、s Integer ( D) Dim a(0 To 100)As Integer 6 设有如下一段程序: Private Sub Command1_Click() Static a As Variant a=Array(“one“,“two“,“three“,“four“,“five“) Print a(3) End Sub 针对上述事件过程,以下叙述中正确的是 ( A)变量声明语句有错,应改为 Static a(5)As Variant ( B)变量声明语句有错,应改为 Static a ( C)可以正常运行,在窗体上显示 three ( D)可以正常运行,在窗体上显示 four 7 在程序
4、中要使用 Array函数给数组 arr赋初值,则以下数组变量定义语句中错误的是 ( A) Static arr ( B) Dim arr(5) ( C) Dim arr() ( D) Dim arr As Variant 8 有下面程序代码: Option Base1 Private Sub Command1_Click() Dim a(10)As Integer,x,b x=InputBox(“请输入一个多位整数 “) For k=1 To Len(x) b=Mid(x,k,1) a(Val(b)+1)=a(Val(b)+1)+1 Next k For k=1 To 10 Print a(k
5、); Next k End Sub 程序运行时,单击命令按钮 Command1,输入 2355270224,则输出是 ( A) 1 0 4 1 1 2 0 1 0 0 ( B) 0 4 1 1 2 0 1 0 0 0 ( C) 2 3 5 5 2 7 0 2 2 4 ( D) 4 2 2 0 7 2 5 5 3 2 9 在窗体上画一个名为 Command1的命令按钮,然后编写以下程序: Private Sub Command1_Click() Dim M(10) As Integer For k=1 To 10 M(k)=12-k Next k x=8 Print M(2+M(x) End S
6、ub 运行程序,单击命令按钮,在窗体上显示的是 ( A) 6 ( B) 5 ( C) 7 ( D) 8 10 在窗体上画一个名称为 Text1的文本框,并编写如下程序: Option Base1 Private Sub Form_Click() Dim arr Dim Start As Integer,Finish As Integer Sum As Integer arr=Array(12,4,8,16) Start=LBound(arr) Finish=UBound(arr) Sum=0 Fo ri=Start To Finish Sum=Sum+arr(i) Next i c=Sum/F
7、inish Text1.Text=c End Sub 运行程序,单击窗体,则在文本框中显示的是 ( A) 40 ( B) 10 ( C) 12 ( D) 16 11 窗体上有一个名称为 Command1的命令按钮,并有如下程序代码: Option Base1 Private Sub Command1_Click() Dim a%(3,3) For i=1 To 3 For j=1 To 3 If i 1Andj 1Then a(i,j)=a(a(i-1,j-1),a(i,j-1)+1 Else a(i,j)=i*j End If Next Next Print a(2,2);a(3,3) En
8、d Sub 运行程序,单击命令按钮,窗体上显示的是 ( A) 1 3 ( B) 2 1 ( C) 2 2 ( D) 3 3 12 窗体上有一个名称为 Command1的命令按钮。要求编写程序,把文件 f1.txt的内容写到文件 f2.txt中,然后将 f1.txt删除。命令按钮的单击事件过程如下: Private Sub Command1_Click() Open“c:f1.txt“For Input As#1 Open“c:f2.txt“For Output As#2 Do While NotEOF(2) Line Input#1,str1 Print#2,str1 Loop Close K
9、ill“c:f1.txt“ End Sub 该程序运行时发生错误,应该进行的修改是 ( A)打开 f1.txt应该使用 Output方式,打开 f2.txt应该使用 Input方式 ( B) Not EOF(2)应该改为 Not EOF(1) ( C) Line Input应改为 Get ( D) Close语句改为 Close All 13 窗体上有一个名称为 Command1的命令按钮,有程序如下: Option Base1 Private Sub Command1_Click() Dim a(10)As Integer第 1个 For For i=1 To 10 a(i)=Int(Rnd
10、*100+100) Print a(i); Next x=a(i):y=x第 2个 For For i=1 To 10 Ifx a(i)Then x=a(i) Ify a(i)Then y=a(i) s=s+a(i) Next Printx,y,s End Sub 关于上述程序的叙述中,正确的是 ( A)程序运行出错,第 1个 For循环之后的 x=a(i)赋值语句错 ( B)程序正常运行, x是 10个随机数中的最大值 ( C)程序正常运行, s是 10个随机数的和 ( D)程序正常运行, 10个随机数的范围是 100-200 14 假定有如下程序: Private Sub Form_Cli
11、ck() Dim a(4)As Integer,b(4)As Integer For k=0 To 2 a(k+1)=Val(InputBox(“请输入一个整数: “) b(3-k)=a(k+1) Next k Print b(k) End Sub 运行程序,单击窗体,依次输入 3、 6、 9,输出结果为 ( A) 3 ( B) 6 ( C) 9 ( D) 1 15 阅读程序: Option Base1 Sub P(b()As Integer) For i=1 To 4 b(i)=2*i Next i End Sub Private Sub Form_Click() Dim a(4)As In
12、teger For i=1 To 4 a(i)=i+4 Next i P a For i=1 To 4 Print a(i) Next i End Sub 运行上面的程序, 单击窗体,输出结果为 ( A) 2 4 6 8 ( B) 5 6 7 8 ( C) 10 12 14 16 ( D) 4 8 12 16 16 设有下面程序代码: Private Sub Command1_Click() Dim a As Variant a=Array(22,43,23,56,87,45,67,12,98,98,56,34,23,75,64) m=a(0)n=m For k=1 To UBound(a)
13、If a(k) m Then n=m:m=a(k) ElseIf a(k) n And a(k) m Then n=a(k) End If Next k Print n End Sub 程序运行时的输出是 ( A)数组中最大的数 (即 98) ( B)数组中最小的数 (即 12) ( C)数组中第 2大的数 (即 87) ( D)数组中第 1个数 (即 22) 17 以下关于控件数组的叙述中,正确的是 ( A)数组中各个控件具有相同的名称 ( B)数组中可包含不同类型的控件 ( C)数组中各个控件具有相同的 Index属性值 ( D)数组元素不同,可以响应的事件也不同 18 假定通过复制、粘贴
14、操作建立了一个 命令按钮数组 Command1,以下说法中错误的是 ( A)数组中每个命令按钮的名称 (Name属性 )均为 Command1 ( B)若未做修改,数组中每个命令按钮的大小都一样 ( C)数组中各个命令按钮使用同一个 Click事件过程 ( D)数组中每个命令按钮的 Index属性值都相同 19 窗体上有一个名称为 Option1的单选按钮数组,程序运行时,当单击某个单选按钮时,会调用下面的事件过程 Private Sub Option1_Click(Index As Integer) End Sub 下面关于此过程的参数 Index的叙述中正确的是 ( A) Index为 1
15、表示单选按钮被选中,为 0表示未选中 ( B) Index的值可正可负 ( C) Index的值用来区分哪个单选按钮被选中 ( D) Index表示数组中单选按钮的数量 20 下面关于控件数组的叙述中正确的是 ( A)控件数组中所有控件的名称相同,但其 Index属性值各不相同 ( B)控件数组中所有控件的名称相同,但其 Value属性值各不相同 ( C)控件数组中每个元素都是独立的控件,因此都有各自的事件过程 ( D)上述都是错误的 21 窗体上有一个由两个文本框组成的控件数组,名称为 Text1,并有如下事件过程: Private Sub Text1_Change(Index As Int
16、eger) Select Case Index Case0 Text1(1).FontSize=Text1(0).FontSize*2 Text1(1).Text=Text1(0).Text Case1 Text1(0).FontSize=Text1(1).FontSize/2 Text1(0).Text=Text1(1).Text Case Else MsgBox“执行 Else分支 “ End Select End Sub 关于上述程序,以下叙述中错误的是 ( A) Index用于标识数组元素 ( B)本程序中 Case Else分支的语句永远不会被执行 ( C)向任何一个文本框输入字符,
17、都会在另一个文本框中显示该字符 ( D)下标为 0的文本框中显示的字符尺寸将越来越小 国家二级 VB机试(数组)模拟试卷 3答案与解析 一、选择题 1 【正确答案】 D 【试题解析】 本题考查的考点是有关二维数组的。二维数组定义时对于数组的每一维均给定下标的下界和上界,中 间用 To连接,即给出下标可取值的变化范围。“数组元素个数 ”指的是数组中成员的个数,每一维的长度是上界 -下界 +1,数组元素个数等于各维长度之积。 【知识模块】 数组 2 【正确答案】 C 【试题解析】 二维数组定义时对于数组的每一维均给定下标的下界和上界,中间用 To连接,即给出下标可取值的变化范围。 “数组元素个数
18、”指的是数组中成员的个数,每一维的长度是上界 -下界 +1,数组元素个数等于各维长度之积。数组下标的默认下限值为 0,此时数组某一维的元素个数等于该维下标上界值加 1。 【知识模块】 数 组 3 【正确答案】 C 【试题解析】 定义数组一般使用的格式是 Dim数组名 (下界 To、上界 ,下界To上界 ) As类型名称,其中定义数组时,每一维的下标必须是常数,不能是变量或表达式。即使在执行数组定义语句之前给出变量的值,也是错误的:无论定义数组的格式为那种,下界都必须小于上界。 【知识模块】 数组 4 【正确答案】 C 【试题解析】 二维数组定义时对于数组的每一维均给定下标的下界和上界,中间用
19、To连接,即给出下标可取值的变化范围。 “数组元素个数 ”指的是数组中成员的个 数,每一维的长度是上界 -下界 +1,默认下界是 0,数组元素个数等于各维长度之积。 【知识模块】 数组 5 【正确答案】 B 【试题解析】 动态数组以变量作为下标值,在程序运行过程中完成定义,通常分为两步:首先在窗体层、标准模块或过程中用 Dim或 Public声明一个没有下标的数组 (括号不能省略 ),然后在过程中随时用 ReDim语句可以重定义变量作为下标的数组,重定义后原数组的所有元素值被清空。 【知识模块】 数组 6 【正确答案】 D 【试题解析】 Array(arglist)函数 用于将 arglist
20、参数中一组用逗号隔开的值列转换成一个数组并赋值给某数组变量,此时要求数组变量在定义时定义成变体型变量或者不声明长度的数组,不能是定长数组。数组的默认下界为 0,所以 a(3)是数组的第四个元素。 【知识模块】 数组 7 【正确答案】 B 【试题解析】 Array(arglist)函数用于将 arglist参数中一组用逗号隔开的值列转换成一个数组并赋值给某数组变量,此时要求数组变量在定义时定义成变体型变量或者不声明长度的数组,不能是定长数组。 【知识模块】 数组 8 【 正确答案】 A 【试题解析】 InputBox函数将会返回用户在输入对话框中输入的文本,以字符串的形式返回;在第一个 For循
21、环中从前到后依次取出字符串中的每一位数字,然后令对应的数组元素自加 1,其中数组的第一位放的是 0的个数,所以循环结束后数组中存放的是各个数字出现的个数。 【知识模块】 数组 9 【正确答案】 A 【试题解析】 本题考查的考点是有关数组的。本题只需要清楚知道最终输出的是什么就可以了,由于 x被呲值为 8,所以 M(x)也就是 M(8),其值为 4;将 4代换M(x),可以知道最终 输 LH的是 M(2+4)也就是 M(6),所以最终输出结果为 6。 【知识模块】 数组 10 【正确答案】 B 【试题解析】 本题中变量 Start存放的是数组的下界, Finish存放数组的上界,因此 For循环
22、将遍历整个数组;在每次循环中将数组元素累加到累加和变量 Sum中,循环结束后用累加和变量除以数组上界,由于数组下界从 0开始,即求出数组平均值。 【知识模块】 数组 11 【正确答案】 D 【试题解析】 本题是一个二维数组的赋值问题,要判断清哪一个数组元素的值被赋值成了多少。首先确 定 a(1, 1)=1, a(1, 2)=2, a(1, 3)=3, a(2, 1)=2, a(3,1)=3;然后按照公式计算其余的元素。 【知识模块】 数组 12 【正确答案】 B 【试题解析】 打开文件的基本格式为: Open FileName For Mode As#FileNumber。打开方式主要有 Ou
23、tput、 Append、 Input、 Random等几种。本题中打开了两个文件,其中 1号文件用于读取, 2号文件用于写入。当进行读取时循环条件应该为 NotEOFf(1)g0还没有读取到文件结尾。 【知 识模块】 数组 13 【正确答案】 A 【试题解析】 随机数函数 Rnd的功能是用于产生一个小于 l但大于或等于 0的随机数,本题中产生的整数的范围是 100-199:在第一个循环结束后,循环变量 i的值为不满足循环条件的值 11,在紧随其后的 x=a(i)语句将会执行出错,因为出现了数组越界。 【知识模块】 数组 14 【正确答案】 A 【试题解析】 本题在循环中输入数据,当第一次输入
24、 3的时候 a(1)=3,b(3)=a(1)=3;当第二次输入 6的时候 a(2)=6, b(2)=a(2)=6;当第三 次输入 9的时候 a(3)=6, b(1)=a(3)=9,跳出循环后 k的值为 3,将输出 b(3)的值。 【知识模块】 数组 15 【正确答案】 A 【试题解析】 本题中的过程 P的功能是为形参数组 b进行赋值,数组作为参数时采用的是地址传递,所以对形参的改变将会影响实参,也就是在窗体的单击事件中,首先在一个循环中为数组 a赋值,然后调用了 P过程重新为 a赋值覆盖掉原来的值。 【知识模块】 数组 16 【正确答案】 c) 【试题解析】 本题显然是求取数组最大值的,先取得
25、数组的第一个元素作为最大值,然后用 m保存最大值;在循环中如果发现了有比 m还大的数组元素,则将该元素作为新的最大值,原来的最大值 m赋值给 n;如果元素不比 m大就去比较元素是否大于 n,若大于 n则将元素赋值给 n,所以循环结束后 n中的值是数组中第2大的数。 【知识模块】 数组 17 【正确答案】 A 【试题解析】 控件数组是一组具有共同名称和共同类型的控件,它们拥有共同的事件,数组中的每个控件都有惟一的索引号 (Index),即下标。 【知识模块】 数组 18 【正确答案】 D 【试题解析】 本题考查的考点是有 关控件数组的。控件数组是一组具有共同名称和类型的控件,它们拥有共同的事件,
26、数组中的每个控件都有唯一的索引号(Index),即下标,默认索引号从 0开始。建立控件数组有两种方法:一是先在窗体 j二画好一个控件,然后再用 “复制 ”和 “粘贴 ”的方法建立;二是先在窗体上先画出若干相同类型的控件,然后再将它们的名称改为同一个名称,再将其 Index属性分别设置为不同值即可。采用第一种方法建立控件数组时,每个数组元素的名称、大小、事件均使用同一个,区别只在于 Index属性不一样。 【知识模块】 数组 19 【正确答案 】 C 【试题解析】 控件数组是一组具有共同名称和类型的控件,它们拥有共同的事件,数组中的每个控件都有惟一的索引号 (Index),即下标,默认索引号从
27、0开始,不能为负值。 【知识模块】 数组 20 【正确答案】 A 【试题解析】 控件数组是一组具有共同名称和类型的控件,它们拥有共同的事件,数组中的每个控件都有惟一的索引号 (Index),即下标,默认索引号从 0开始,不能为负值。 【知识模块】 数组 21 【正确答案】 D 【试题解析】 控件数组是一组具有共同名称和类型的控 件,它们拥有共同的事件,数组中的每个控件都有唯一的索引号 (Index),即下标,默认索引号从 0开始。本题中的两个文本框的 Index值分别为 0和 1,所以 Case Else分支的语句永远不会被执行:根据程序向仃何一个文本框输入字符,都会在另一个文本框中显示该字符;在 0号文本框中输入时 1号文本框的字号是 0号文本框字号的 2倍,在1号文本框中输入时 0号文本框的字号是 1号文本框字号的一半,相当于没有变化,不会越来越小。 【知识模块】 数组