1、国家二级 VB机试(数组)模拟试卷 2及答案与解析 一、选择题 1 以下数组定义语句中,错误的是 ( A) Static a(10)As Integer ( B) Dim c(3,1 To 4) ( C) Dim d(-10) ( D) Dim b(0 To 5,1 To 3)As Integer 2 下面正确使用动态数组的是 ( A) Dim arr()As IntegerReDim arr(3,5) ( B) Dim arr()As IntegerReDim arr(50)As String ( C) Dim arr()ReDim arr(50)As Integer ( D) Dim ar
2、r(50)As IntegerReDim arr(20) 3 语句 Dim Arr(-2 To 4)As Integer所定义的数组的元素个数为 ( A) 7个 ( B) 6个 ( C) 5个 ( D) 4个 4 以下关于数组的叙述中,错误的是 ( A) Variant类型的数组中各数组元素的类型可以不同 ( B)各数组元素可以是不同类型的控件 ( C)各数组元素通过下标进行区别 ( D)各数组元素具有相同的名称 5 以下 叙述中错误的是 ( A)用 ReDim语句可以改变数组的维数 ( B)用 ReDim语句可以改变数组的类型 ( C)用 ReDim语句可以改变数组每一维的大小 ( D)用
3、ReDim语句可以对数组中的所有元素置 0或空字符串 6 如果要在语句: a=Array(1,2,3,4,5)的前面声明变量 a,则正确的声明是 ( A) Dim a(4) As Integer ( B) Dim a(5) As Variant ( C) Dim a(1 To 5) As Integer ( D) Dim a As Variant 7 在窗体上画一个命令按钮 (其 Name属性为 Command1),然后编写如下代码: Private Sub Command1_Click() Dim n()As Integer Dim a,b As Integer a=InputBox(“En
4、ter the first number“) b=InputBox(“Enter the second number“) ReDim n(a To b) For k=LBound(n) To UBound(n) n(k)=k Print n(k); Next k End Sub 程序运行后,单击命令按钮,在输入对话框中分别输入 2和 3,输出结果为 ( A) 1 2 ( B) 2 3 ( C) 3 4 ( D) 4 5 8 有下面程序代码: Private Sub Command1_Click() a=Array(1,2,3,4,5,6,7,8,9,10)n=UBound(a)For k=0
5、To UBound(a)/2Printa(k)*a(n);n=n-1Nex tk End Sub程序运行后,单击命令按钮 Command1,输出结果是 ( A) 2 6 12 20 30 ( B) 2 12 20 56 90 ( C) 30 28 24 18 10 ( D) 10 18 24 28 30 9 窗体上有 Command1、 Command2两个命令按钮。现编写以下程序: Option Base 0 Dim a() As Integer,m As Integer Private Sub Command1_Click()m=InputBox(“请输入一个正整数 “)ReDim a(m
6、) End Sub Private Sub Command2_Click()m=InputBox(“请输入一个正整数 “)ReDim a(m) End Sub运行程序时,单击 Command1后输入整数10,再单击 Command2后输入整数 5,则数组 a中元素的个数是 ( A) 5 ( B) 6 ( C) 10 ( D) 11 10 在窗体上画一个命令按钮和一个标签,其名称分别为 Command1和 Label1,然后编写如下事件过程: Private Sub Command1_Click() Dim arr(10) For i=6 To 10 arr(i)=i-5 Next i Labe
7、l1.Caption=arr(0)+arr(arr(10)/arr(6) End Sub 运行程序,单击命令按钮,则在标签中显示的是 ( A) 0 ( B) 1 ( C) 2 ( D) 3 11 以下过程的功能是从数组中寻找最大值: Private Sub FindMax(a() As Integer,ByRef Max As Integer) Dim s As Integer,f As Integer Dim i As Integer s=LBound(a):f=UBound(a) Max=a(s) For i=s To f If a(i) Max Then Max=a(i) Next En
8、d Sub 以下关于上述过程的叙述中,错误的是 ( A)语句 Call FindMax(a,m)可以调用该过程,其中的 a是数组, m是 Integer类型变量 ( B) For循环次数等于 a数组的元素数 ( C)过程末尾应该增加一条返回最大值的语句 FindMax=Max ( D)参数 Max用于存放找到的最大值 12 窗体上有一个名称为 Command1的命令按钮,其单击事件过程如下: Option Base1 Private Sub Command1_Click() Dim a(4,4)As Integer For i=1 To 4 For j=1 To 4 a(i,j)=Int(Rn
9、d*100) Next Next x=a(1,1)y=a(1,1) For i=1 To 4 For j=1 To 4 If x a(i,j)Then x=a(i,j) If y a(i,j)Then y=a(i,j) Next s=s+a(i,i) Next Print x,y,s End Sub 关于以上程序,以下叙述中错误的是 ( A)二维数组元素的值是不大于 99的随机整数 ( B)计算结果 x是二维数组各元素中的最大数 ( C)计算结果 y是二维数组各元素中的最小数 ( D)计算结果 s是二维数组各行第一个元素之和 13 窗体上有名称为 Command1的命令按钮,其事件过程如下:
10、Option Base1 Private Sub Command1_Click() Dim a Dim b(10)As Integer a=Array(2,4,7,3,9,6) For i=LBound(a) To UBound(a) b(i)=a(i)+i Sum=Sum+b(i) Next i Print Sum End Sub 运行程序,单击命令按钮时,窗体上显示的是 ( A) 44 ( B) 46 ( C) 50 ( D) 52 14 在窗体上画一个文本框,其名称为 Text1,然后编写如下程序: Option Base1 Private Sub Form_Click()Dim Arr
11、(10) As Integer For i=6 To 10 Arr(i)=i-3 Next i Text1.Text=Str(Arr(6)+Arr(Arr(6)+Arr(10) End Sub 程序运行后,单击窗体,在文本框中显示的内 容是 ( A) 7 ( B) 8 ( C) 9 ( D) 10 15 阅读程序: Option Base1 Private Sub Form_Click() Dim a(3,3)As Integer For i=1 To 3 For j=1 To 3 a(i,j)=_ Print a(i,j); Nex tj Print Next i End Sub 运行上面的
12、程序,单击窗体,输出结果如下: 1 4 7 2 5 8 3 6 9 则在横线处应填入的内容为 ( A) i+j ( B) i*j ( C) (i-1)*3+j ( D) i+(j-1)*3 16 在窗体上画一个命令按钮,然后编写如下程序: Option Base1 Private Sub Command1_Click() Dim Arr(10)As Integer For i=1 To 10 Arr(i)=11-i Next i x=InputBox(“输入一个整数 (3 10)“) Print Arr(2+Arr(x) End Sub 程序运行后,单击命令按钮,在输入对话框中输入 7,则输出
13、结果为 ( A) 3 ( B) 4 ( C) 5 ( D) 6 17 设有下面程序代码: Option Base1 Private Sub Command1_Click() Dim x(6) a=Array(4,2,5,1,6,3) b=Array(64,24,98,27,58,41) For k=1 To 6 x(a(k)=b(k) Next k For k=1 To 6 Print x(k); Next k End Sub 程序运行时的输出是 ( A) 27 24 41 64 98 58 ( B) 64 24 98 27 58 41 ( C) 24 27 41 58 64 98 ( D)
14、98 64 58 41 27 24 18 以下关于控件数组的叙述中,错误的是 ( A)各数组元素共用相同的事件过程 ( B)各数组元素通过下标进行区别 ( C)数组可以由不同类型的控件构成 ( D)各数组元素具有相同的名称 19 窗体上已有的 3个单选按钮组成了 1个名为 ChkOpt1的控件数组。用于区分控件数组 ChkOpt1中每个元素的属性是 ( A) Caption ( B) ListCount ( C) ListIndex ( D) Index 20 设在窗体上有一个名称为 Check1的复选框数组,并有以下事件过程: Private Sub Check1_Click(Index A
15、s Integer) End Sub 则下面叙述中错误的是 ( A)单击数组中任何复选框都会调用此事件过程 ( B)参数 Index的值等于单击数组中某个复选框的 Index属性的值 ( C)上面的过程是数组中第 1个复选框的事件过程 ( D)从过程的首部 (即第 1行 )无法确定数组中复选框的个数 21 下列关于控件数组的叙述中,正确的是 ( A)控件数组可以由不同类型的 控件组成 ( B)控件数组元素的最小下标值为 1 ( C)在设计阶段,可以改变控件数组元素的 Index属性值 ( D)控件数组的名字由 Caption属性指定 国家二级 VB机试(数组)模拟试卷 2答案与解析 一、选择题
16、 1 【正确答案】 C 【试题解析】 本题考查的考点是有关数组定义的。在 Visual Basic中,可以用 4个关键字来定义数组,分别是 Dim、 ReDim、 Public和 Static。在 Visual Basic中定义数组有两种格式。 格式一: Dim数组名 (下标上界 ) As类型名称 Dim数组名 (第一维下标上界,第二维下标上界 1 As类型名称 格式二: Dim数组名 (下界 To上界 ,下界 To上界 ) As类型名称 其中上界必须大于下界。本题中选项 C采取第一种格式定义数组,则数组默认下界为 0,上界 -10小于 0,故不符合要求。 【知识模块】 数组 2 【正确答案】
17、 A 【试题解析】 通常把需要在编译时分配内存区的数组叫做静态数组,而把需要在运行时分配内存区的数组叫做动态数组。定义动态数组通常分两步:首先在窗体层或标准模块中用 Dim、 Private或 Public声 明一个没有下标的数组 (括号不能省略 ),然后在过程中用 ReDim语句定义带下标的数组。 ReDim语句只能用于动态数组,它可以改变每一维的大小,但不能改变维数和数组类型。 【知识模块】 数组 3 【正确答案】 A 【试题解析】 数组中所含有的元素个数为:上界 -下界 +1,本题中计算 4-(-2)+1=7。 【知识模块】 数组 4 【正确答案】 B 【试题解析】 数组是一组具有相同类
18、型和名称的变量的集合。这些变量称为数组元素,它们具有相同的名称,每个数组元素都有一个编号被称为下标,可以 通过下标来区别这些元素。变体型数组,控件数组中各数组元素必须是相同类型的控件。 【知识模块】 数组 5 【正确答案】 B 【试题解析】 Visual Basic中有两种类型的数组:同定大小的数组及动态数组。固定大小的数组总是保持同样的大小,而动态数组在运行时可以改变大小。要使用动态数组可先声明一个不指明大小的窄数组 (即没有维数下标 ),然后再用ReDim语句在过程中改变数组大小和类型,对于多维数组,无法改变维数,只能改变最后一维的大小。 【知识模块】 数组 6 【正确答案】 D 【试题解
19、析】 Array(arglist)函数用于将 arglist参数中一组用逗号隔开的值列转换成一个数组并赋值给某数组变量,此时要求数组变量在定义时定义成变体型变量或者不声明长度的数组,不能是定长数组。 【知识模块】 数组 7 【正确答案】 B 【试题解析】 动态数组以变量作为下标值,在程序运行过程中完成定义,通常分为两步:首先在窗体层、标准模块或过程中用 Dim或 Public声明一个没有下标的数组 (括号不能省略 ),然后在过程中随时用 ReDim语句可以重定义变量作为下标的数组,重定义后原数 组的所有元素值被清空。输入 2、 3之后数组被重新定义成了 n(2To3),只有两个数组元素,并且
20、n(k)=k,即输出 2 3。 【知识模块】 数组 8 【正确答案】 D 【试题解析】 使用 Array函数建立的数组其下标下界为 0, n的值是数组的上界即 9;在循环中 k从 0循环到数组长度的一半,每次输出 a(k)*a(n)的值然后令 n-1,故此容易得到每次输出的是数组两端值之积,依次向数组中间移动,即 1,*10、 2*9、 3*8、 4*7、 5*6。 【知识模块】 数组 9 【正确答案】 B 【试 题解析】 本题考查的考点是有关动态数组的。动态数组以变量作为下标值,在程序运行过程中完成定义,通常分为两步:首先在窗体层、标准模块或过程中用 Dim或 Public声明一个没有下标的
21、数组 (括号不能省略 ),然后在过程中随时用ReDim语句可以重定义变量作为下标的数组,重定义后原数组的所有元素值被清孔。本题中由于数组下标从 0开始,所以单击 Command1后输入 10,数组被重定义成了 11个元素:然后单击 Command2输入 5,数组又被霞定义成了 6个元素,所以最后数组中有 6个元素。 【知识模块】 数组 10 【正确答案】 A 【试题解析】 在本能题的循环中分别将 arr(6)到 arr(10)的数组元素赋值为 15,而 arr(0)到 arr(5)的数组元素没有被赋值,将保留默认初值 0,即最后标签上显示的是 arr(0)+arr(5)=0。 【知识模块】 数
22、组 11 【正确答案】 C 【试题解析】 本题中定义了一个子过程 FindMax,第一个形参是一个数组,第二个形参是一个整型值,所以调用此过程的实参也应该是一个数组和一个整型变量;在过程中遍历整个数组,首先让数组的第一个元素为最大值,然后依次用数组 元素和 Max进行比较,若其比 Max大则令其成为新的最大值,所以 For循环次数等于 a数组的元素数,参数 Max用于存放找到的最大值:子过程没有返回值,也无需增加一条返回最大值的语句 FindMax=Max。 【知识模块】 数组 12 【正确答案】 D 【试题解析】 随机数函数 Rnd的功能是用于产生一个小于 1但大于或等于 0的随机数,本题中
23、产生的整数不会大于 99;后一个二重循环用于遍历整个二维数组并且进行比较,如果数组元素的值大于 x则成为新的最大值,小于 y则成为新的最小值,循环结束后 x是二维数组各元素 中的最大数, y是二维数组各元素中的最小数。 s中存放的是二维数组对角线元素之和。 【知识模块】 数组 13 【正确答案】 D 【试题解析】 本题中使用了一个循环为 b数组进行赋值,每个元素的值是对应 a数组元素的值加上下标的值。因此 b数组中的元素为 (3、 6、 10、 7、 14、 12),然后累加和为 52。 【知识模块】 数组 14 【正确答案】 D 【试题解析】 本题中在循环中为数组部分元素赋值,把 Arr(6
24、) Arr(10)分别赋值为 3 7,其余的数组元素保持默认值 0;最终输出的是Arr(6)+Arr(Arr(6)+Arr(10)即 Arr(6)+Arr(10)=10。 【知识模块】 数组 15 【正确答案】 D 【试题解析】 本题中使用二重循环为数组赋值,分许输出的结果,每个元素和行号和列号的关系可以看出,每个元素的值应该等于 i+(j-1)*3。 【知识模块】 数组 16 【正确答案】 C 【试题解析】 本题是一个简单的数组操作,首先在一个循环中为数组元素赋值,然后输出指定的数组元素值。最终输出的是 Arr(2+Arr(7)=Arr(6)=5。 【 知识模块】 数组 17 【正确答案】
25、A 【试题解析】 本题是一个简单的数组赋值,只要把握好每次为哪个元素赋以什么样的值就不会出错。最后 x数组中存放的数据依次是 27、 24、 41、 64、 98、 58。 【知识模块】 数组 18 【正确答案】 C 【试题解析】 控件数组是一组具有共同名称和共同类型的控件,它们拥有共同的事件,数组中的每个控件都有惟一的索引号 (Index),即下标。 【知识模块】 数组 19 【正确答案】 D 【试题解析】 控件数组是一组具有共同名称和类型的 控件,它拥有共同的事件,数组中的每个控件都有唯一的索引号 (Index),即下标,默认索引号从 0开始。 【知识模块】 数组 20 【正确答案】 C 【试题解析】 控件数组是一组具有共同名称和类型的控件,它们拥有共同的事件,数组中的每个控件都有惟一的索引号 (Index),即下标,默认索引号从 0开始,不能为负值。从过程的首部无法确定数组中控件的个数。 【知识模块】 数组 21 【正确答案】 C 【试题解析】 控件数组是一组具有共同名称和类型的控件,它们拥有共同的事件,数组中的每个控 件都有唯一的索引号 (Index),即下标,默认索引号从 0开始,在设计阶段可以手动指定控件数组元素的 Index属性值。 【知识模块】 数组