数组和自定义类型

一、 单选题

1. 下面数组声明语句,_________正确。

A) Dim a[2,4] As Integer

B) Dim a(2,4) As Integer

C) Dim a(n,n) As Integer

D) Dim a(2 4) As Integer

2.要分配存放如下方阵的数据,可使用________数组声明语句来实现(不能浪费空间)。

A) Dim x(9) As Single

B) Dim x(3,3) As Single

C) Dim x(-1 to 1, -5 to -3) As Single

D) Dim x(-3 to -1, 5 to 7) As Integer

3. 下面数组声明语句中,数组包含元素个数为 ________。

Dim a(-2 to 2,5)

A) 120

B) 30

C) 60

D) 20

4.下面程序的输出结果是 ________。

Dim a

a = Array(1,2,3,4,5,6,7)

For i = Lbound(A) to Ubound(A)

a(i) = a(i) * a(i)

Next i

Print a(i)

A) 36

B) 程序出错

C) 49

D) 不确定

5.下面程序的输出结果是 ________。

Option Base 1

Private Sub Command1_Click()

Dim a%(3, 3)

For i = 1 To 3

For j = 1 To 3

If j > 1 And i > 1 Then

a(i, j) = a(a(i - 1, j - 1), a(i, j - 1)) + 1

Else

a(i, j) = i * j

End If

Print a(i, j);

Next j

Print

Next i

End Sub

A)1 2 3

2 3 1

3 2 3

B) 1 2 3

1 2 3

1 2 3

C) 1 2 3

2 4 6

3 6 9

D) 1 2 3

2 2 2

3 3 3

6.以下定义数组或给数组元素赋值的语句中,正确的是______。

A)Dim a As Variant

a = Array(1,2,3,4,5)

B)Dim a(10) As Integer

a = Array(1,2,3,4,5)

C)Dim a%(10)

a(1) = "ABCDE"

D)Dim a(3),b(3) As Integer

a(0) = 0

a(1) = 1

a(2) = 2

b = a

7.设有如下的记录类型

Type Student

number As String

name As String

age As Integer

End Type

则正确引用该记录类型变量的代码是______。

A)Student.name ="张红"

B)Dim s As Student

s.name ="张红"

C)Dim s As Type Student

s.name ="张红"

D)Dim s As Type

s.name ="张红"

8. 在窗体上画一个命令按钮(其Name属性为Command1),然后编写如下代码:

Option Base 1

Private Sub Command1_Click()

Dim a

s=0

a=Array(1,2,3,4)

j=1

For i=4 To 1 Step -1

s=s+a(i)*j

j=j*10

Next i

Print s

End Sub

运行上面的程序,单击命令按钮,其输出结果是______。

A)4321

B)1234

C)34

D)12

9. 执行以下Command1的Click事件过程在窗体上显示______。

Option Base 0

Private Sub Command1_Click( )

Dim a

a=Array("a","b","c","d","e","f","g")

Print a(1);a(3);a(5)

End Sub

A)abc

B)bdf

C)ace

D)无法输出结果

10. 在窗体上画一个名称为Command1 的命令按钮,然后编写如下事件过程:

Option Base 1

Private Sub Command1_Click()

Dim a

a = Array(1, 2, 3, 4, 5)

For i = 1 To UBound(A)

a(i) = a(i) + i – 1

Next

Print a(3)

End Sub

程序运行后,单击命令按钮,则在窗体上显示的内容是______。

A)4

B)5

C)6

D)7

编辑推荐:

2011年计算机二级VB考试冲刺模拟试题及答案

2011年计算机二级VB考试记录文件考前冲刺习题及答案

2011年计算机二级VB考试形参实参考前冲刺习题及答案

来源:教育联展网-计算机二级考试

11. 窗体上画一个命令按钮,其名称为Command1,然后编写如下事件过程:

Private Sub Command1_Click()

Dim M(10), N(10)

I = 3

For T = 1 To 5

M(T) = T

N(I) = 2 * I + T

Next T

Print N(I); M(I)

End Sub

窗体运行后,单击命令按钮,输出结果为______。

A)3 11

B)3 15

C)11 3

D)15 3

12.下列程序段的执行结果为______。

Dim M(10)

For I=0 To 9

M(I)=2*I

Next I

Print M(M(3))

A)12

B)6

C)0

D)4

13. 设有如下程序:

Option Base O

Prvate Sub Form_Click()

Dim a

Dim i As Integer

a= Array(1,2,3,4,5,6,7,8,9)

For i=0 To 3

Print a(5 -i);

Next

End Sub

程序运行后,单击窗体,则在窗体上显示的是______。

A)4 3 2 1

B)5 4 3 2

C)6 5 4 3

D)7 6 5 4

14. 在窗体上面画一个命令按钮,其名称为Command1,然后编写如下事件过程:

Private Sub Command1_Click()

Dim a1(4,4),a2(4,4)

For I=1 to 4

For j=1 To 4

a1(I,j)=I+j

a2(I,j)=a1(I,j)+I+j

Next j

Next I

Print a1(3,3);a2(3,3)

End Sub

程序运行后,单击命令按钮,在窗体上输出的是______。

A)6 6

B)10 5

C)7 21

D)6 12

15. 有以下程序:

Option Base 1

Dim arr() As Integer

Private Sub Form_Click()

Dim i As Integer, j As Integer

ReDim arr(3, 2)

For i=1 To 3

For j=1 To 2

arr(i,j)=i*2+j

Next j

Next i

ReDim Preserve arr(3,4)

For j=3 To 4

arr(3,j)=j+9

Next j

Print arr(3,2);arr(3,4)

End Sub

程序运行后,单击窗体,输出结果为______。

A)8 13

B)0 13

C)7 12

D)0 0

16. 在窗体上画一个命令按钮,名称为Command1,然后编写如下代码:

Option Base 0

Private Sub Command1_Click()

Dim A(4) As Integer, B(4) As Integer

For k=0 To 2

A(k+1)=InputBox("请输入一个整数")

B(3-k)=A(k+1)

Next k

Print B(k)

End Sub

程序运行后,单击命令按钮,在输入对话框中分别输入2、4、6,输出结果为______。

A)0

B)2

C)3

D)4

17. 在窗体上画一个命令按钮,然后编写如下事件过程:

Private Sub Command1_click()

Dim a(5)as String

For i = 1 to 5

a(i)=Chr (Asc("A")+(i-1))

Next i

For Each b in a

Print b;

Next

End Sub

程序运行后,单击命令按钮,输出结果是______。

A)ABCDE

B)1 2 3 4 5

C) a b c d e

D)出错信息

18. 下面叙述中不正确的是______。

A)自定义类型只能在窗体模块的通用声明段进行声明

B)自定义类型中的元素类型可以是系统提供的基本数据类型或已声明的自定义类型

C)在窗体模块中定义自定义类型时必须使用Private关键字

D)自定义类型必须在窗体模块或标准模块的通用声明段进行声明

19. 在设定Option Base 0后,经Dim arr(3,4) As Integer 定义的数组arr含有的元素个数为_____。

A)12

B)20

C)16

D)9

20. 用下面语句定义的数组的元素个数是______ 。

Dim A (-3 To 5) As Integer

A) 6

B) 7

C) 8

D) 9

21. 有如下程序代码,输出结果是_____。

Dim a()

a=Array(1,2,3,4,5)

for i=Lbound(A) to Ubound(A)

print a(i);

next I

A)1 2 3 4 5

B)0 1 2 3 4

C)5 4 3 2 1

D)4 3 2 1 0

22. 窗体上已有命令按钮Command1和标签Label1,下列程序运行后,单击Command1按钮,标签Label1中显示的内容是_____。

Option base 0

Private Sub Command1_Click()

Dim a(5) As Integer, n As Integer

For i = 1 To 5

a(i) = i

n = n + a(i)

Next i

Label1 = n

End Sub

A)5

B)10

C)15

D)程序报错,Label1不能输出结果

23. 在窗体上画一个名称为Label1的标签,然后编写如下事件过程_____。

Private Sub Form_Click()

Dim arr(10, 10) As Integer

Dim i As Integer, j As Integer

For i = 2 To 4

For j = 2 To 4

arr(i, j) = i * j

Next j

Next i

Label1.Caption = Str(arr(2, 2) + arr(3, 3))

End Sub

程序运行后,单击窗体,在标签中显示的内容是_____。

A)12

B)13

C)14

D)15

24. 设有如下程序,其功能是用Array函数建立一个含有8个元素的数组,然后查找并输出该数组中的最小值,请选择程序中空处应为_____。

Option Base 1

Private Sub Command1_Click()

Dim arr1

Dim Min As Integer, i As Integer

arr1 = Array(12, 435, 76, -24, 78, 54, 866, 43)

Min = _____

For i = 2 To 8

If arr1(i) < Min Then Min=arr1(i)

Next i

Print "最小值是:"; Min

End Sub

A)-24

B)886

C)arr1(1)

D)arr1(0)

25. 以下程序的输出结果是_____。

Option Base 1

Private Sub Command1_Click()

Dim a(10),p(3) As Integer

k=5

For i=1 To 10

a(i)=I

Next i

For i=1 To 3

p(i)=a(i*i)

Next I

For i=1 To 3

k=k+p(i)*2

Next i

Print k

End sub

A) 33

B) 28

C) 35

D) 37

26. 以下程序段运行的结果是________。

Dim a(-1 To 5)As Boolean

Dim flag As Boolean

flag=false

Dim i As Integer

Dim j As Integer

Do Until flag=True

For i=-1 to 5

j=j+1

If a(i)=False Then

a(i)=True

Exit For

End If

If i=5 Then

flag=True

End If

Next

Loop

Print j

A)20

B)7

C)35

D)8

27. 以下有关数组定义的语句序列中,错误的是______。

A) Static arr1(3)

Arr1(1)=100

Arr1(2)="Hello"

Arr1(3)=123.45

B)Dim arr2() As Integer

Dim size As Integer

Private Sub Command2_Click()

size=InputBox("输入:")

ReDim arr2(size)

......

End Sub

C)Option Base 1

Private Sub Command3_Click()

Dim arr3() As Integer

......

End Sub

D)Dim n As Integer

Private Sub Command4_Click()

Dim arr4(n) As Integer

......

End Sub

28. 下述语句定义的数组元素有______个。

OPTION BASE 1

DIM A(12,8)

A)117

B)128

C)96

D)20

29. 下列程序段的执行结果为______。

Dim A(10,10)

For I=1 To 8

For J=6 To 8

A(I,J)=I*J

Next J

Next I

Print A(4,6)+A(3,8)+A(8,7)

A)104

B)114

C)无法输出

D)报错溢出

30. 阅读程序

Option Base 1

Private Sub Form_Click()

Dim arr, Sum

Sum = 0

arr = Array(1, 3, 5, 7, 9, 11, 13, 15, 17, 19)

For i = 1 To 10

If arr(i) / 3 = arr(i) \ 3 Then

Sum = Sum + arr(i)

End If

Next i

Print Sum

End Sub

程序运行后,单击窗体,输出结果为______。

A)13

B)14

C)27

D)15

31. 在窗体上画一个名称为Text1的文本框和一个名称为Command1的命令按钮,然后编写如下事件过程:

Private Sub Command1_Click()

Dim array1(10,10) As Integer

Dim i As Integer,j As integer

For i=1 To 3

For j=2 To 4

array1(i,j)=i+j

Next j

Next i

Text1.Text=array1(2,3)+array1(3,4)

End Sub

程序运行后,单击命令按钮,在文本框中显示的值是______。

A)15

B)14

C)13

D)12

32. 窗体上画一个命令按钮,其名称为Command1,然后编写如下事件过程:

Private Sub Command1_Click()

Dim A(10), B(5)

For I = 1 To 10

A(I) = I

Next I

For J = 1 To 5

B(J) = J * 20

Next J

A(5) = B(2)

Print "A(5)=", A(5)

End Sub

窗体运行后,单击命令按钮,输出结果是______。

A)A(5)=40

B)A(5)=20

C)A(5)=10

D)A(5)=5

33. 在窗体上画一个命令按钮,名称为Command1,然后编写如下事件过程:

Option Base 0

Private Sub Command1_Click()

Dim city As Variant

city = Array("北京","上海","天津","重庆")

Print city(1)

End Sub

程序运行后,如果单击命令按钮,则在窗体上显示的内容是______。

A)空白

B)错误提示

C)北京

D)上海

34. 窗体上画一个命令按钮,其名称为Command1,然后编写如下事件过程:

Private Sub Command1_Click()

Dim A(5, 5)

For I = 1 To 3

For J = 1 To 4

A(I, J) = I * J

Next J

Next I

For N = 1 To 2

For M = 1 To 3

Print A(M, N);

Next M

Next N

End Sub

窗体运行后,单击命令按钮,输入结果是______。

A)1 2 3 4 2 4

B)1 2 3 4 6 8

C)1 2 3 2 4 6

D)1 2 3 6 3 6

35. 设有命令按钮Command1的单击事件过程

Private Sub Command1_Click()

Dim a(3,3) AS Integer

For i=1 To 3

For j=1 To 3

a(i,j)=i*j+i

Next j

Next i

Sum=O

For i=1 To 3

Sum=Sum+a(i,4-i)

Next i

Print Sum

End Sub

运行程序,单击命令按钮,输出结果是______。

A)20

B)7

C)16

D)17

36. 在窗体上画一个名称为 Command1 的命令按钮,然后编写如下程序:

Option Base 1

Private Sub Command1_Click()

Dim c As Integer,d As Integer

d=0

c=6

x=Array(2,4,6,8,10,12)

For i=1 To 6

If x(i)>c Then

d=d+x(i)

Else

d=d-c

End If

Next i

Print d

End Sub

程序运行后,如果单击命令按钮,则在窗体上输出的内容为______。

A)10

B)16

C)12

D)20

37. 阅读程序:

Option Base 1

Dim arr() As Integer

Private Sub Form_Click()

Dim i As Integer, j As Integer

ReDim arr(3, 2)

For i = 1 To 3

For j = 1 To 2

arr(i, j) = i * 2 + j

Next j

Next i

ReDim Preserve arr(3, 4)

For j = 3 To 4

arr(3, j) = j + 9

Next j

Print arr(3, 2) + arr(3, 4)

End Sub

程序运行后,单击窗体,输出结果为

A)21

B)13

C)8

D)25

38. 窗体中新建立一个命令按钮(Command1),其事件代码如下:

Private Sub Command1_Click()

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

窗体运行后,单击命令按钮,依次输入1、3、5,执行结果为______。

A)0

B)1

C)3

D)5

39. 在窗体上画一个名称为Command1命令按钮,然后编写如下程序:

Private Sub Command1_Click()

Dim i As Integer,j As Integer

Dim a(10,10)As Integer

For i=1 To 3

For j=1 To 3

a(i,j)=(i-1)*3+j

Print a(i,j);

Next

Print

Next i

End Sub

程序运行后,单击命令按钮,窗体上显示的是______。

A)1 2 3

2 4 6

3 6 9

B)2 3 4

3 4 5

4 5 6

C)1 4 7

2 5 8

3 6 9

D)1 2 3

4 5 6

7 8 9

40. 对窗体编写如下代码:

Option Base 1

Private Sub Form_KeyPress(KeyAscii As Integer)

a=Array(237,126,87,48,498)

m1=a(1)

m2=1

If KeyAscii=13 Then

For i=2 To 5

If a(i)>m1 Then

m1=a(i)

m2=i

End If

Next i

End If

Print m1

Print m2

End Sub

程序运行后,按回车键,输出结果为______。

A)48

4

B)237

1

C)498

5

D)498

4

41.由Array函数建立的数组,其变量必须是______类型。

A)整型

B)字符串

C)变体

D)双精度

42.若定义一维数组为:Dim a(N To M),则该数组的元素为______个。

A)M-N

B)M-N+1

C)M*N

D)M+N

43.下列语句中(假定变量n有值),能正确声明可调数组的是______。

A)Dim a( ) As Integer

ReDim a(n)

B)Dim a( ) As Integer

ReDim a(n) As String

C)Dim a( ) As Integer

ReDim a(3,4)

ReDim Preserve

D)Dim a( 10) As Integer

ReDim a(n+10)

44.在窗体的通用声明段自定义了数据类型Students,下列______定义方式是正确的。

A)Private Type Students

Name As String*10

Studno As Integer

End Type

B)Type Students

Name As String*10

Studno As Integer

End Students

C)Type Students

Name String*10

Studno Integer

End Type

D)Type Students

Name As String*10

Studno As Integer

End Type

45. 以下程序的输出结果是______。

Option Base 1

Private Sub Command1_Click( )

Dim a , b(3 ,3)

A=Array(1,2,3,4,5,6,7,8,9)

For i=1 To 3

For j=1 To 3

b(i ,j)=a(i*j)

if (j>=i) Then Print Tab(j*3) ; Format(b(i , j) , ”# # #”) ;

Next j

Next i

End Sub

A) 1 2 3

4 5 6

7 8 9

B)1

4 5

7 8 9

C)1 4 7

2 4 6

3 6 9

D)1 2 3

4 6

9

二、 填空题

1. 输出大小可变的正方形图案,如图5.2所示,最外圈是第一层,要求每层上用的数字与层数相同。

Option Base 1

Private Sub Form_Click()

Dim a()

n = InputBox("输入 n")

ReDim a(n, n)

For i = 1 To (n + 1) / 2

For j = i To n - i + 1

For k = i To n - i + 1

_______【1】_______

Next k

Next j

Next i

For i = 1 To n

For j = 1 To n

_______【2】_______

Next j

_______【3】_______

Next i

End Sub

2. 下面的程序是将输入的一个数插入到按递减的有序数列中,插入后使该序列仍有序。

Private Sub form_Click()

Dim a, i%, n%, m%

a = Array(19, 17, 15, 13, 11, 9, 7, 5, 3, 1)

n = UBound(A)

ReDim _______【4】_______

m = Val(InputBox("输入插入的数 n"))

For i = UBound(A) - 1 To 0 Step -1

If m >= a(i) Then

_______【5】_______

If i = 0 Then a(i) = m

Else

_______【6】_______

Exit For

End If

Next i

For i = 0 To UBound(A)

Print a(i)

Next i

End Sub

3. 冒泡排序程序如下,请填空。

Private Sub Form_Click()

Dim a, i%, n%, j%

a = Array(1, 5, 6, 4, 13, 23, 26, 31, 51)

n = UBound(A)

For i = 0 To n - 1

For j = 0 To n - 1 - i

If a(j) > a(j + 1) Then

_______【7】_______

_______【8】_______

a(j + 1) = t

End If

Next j

Next i

For i = 0 To UBound(A)

Print a(i)

Next i

End Sub

4.在窗体上画一个名称为“Command1”的命令按钮,然后编写如下事件过程:

Private Sub Command1_Click()

Dim a As String

a = "123456789"

For i = 1 To 5

Print Space(6 - i); Mid$(a, _【9】__ , 2 * i - 1)

Next i

End Sub

程序运行后,单击命令按钮,窗体上的输出结果是:

5

456

34567

2345678

123456789

请填空。

5.以下程序段产生100个1~4之间的随机整数,并进行统计。数组元素S(i)(i=1,2,3,4)的值表示等于i的随机数的个数,要求输出如下格式:

S(1)=. . .

S(2)=. . .

S(3)=. . .

S(4)=. . .

将程序补充完整。

Dim S(4) As Integer

Randomize

For I=1 To 100

X=Int(Rnd * 4+1)

S(X)=S(X)+1

Next I

For I=1 To 4

_【10】___

Next I

6.以下程序代码将任意一组数存入数组,从键盘接收一数据,将其插入数组中,插入的位置也从键盘接收。

Dim A( )

Private Sub Form_Click( )

N=InputBox("数据个数:")

N=N+1

&, nbsp; __【11】__

For I=1To N-1

A(I)=Val(InputBox("原数据:"))

Next I

D=Val(InputBox("插入的数据:"))

P=Val(InputBox("插入的位置:"))

Do While P>N Or P<1

MsgBox"位置越界!"

P=Val(InputBox("插入的位置:"))

Loop

For I=N To P+1 Step -1

A(I)=A(I-1)

Next I

A(P)=D

For I=1 To N

Text1.Text=Text1.Text & Str(A(I))&""

Next I

End Sub

7.设在窗体上有一个文本框Text1,一个标签数组Label1,共有10个标签,以下程序代码实现在单击任一个标签时将标签的内容添加到文本框现有内容之后。

Private Sub Labell_Click(Index As Integer)

Text1.Text=_【12】___

End Sub

8.设工程中有两个窗体Form1、Form2,一个标准模块Module1,设在Form2的代码中定义了以下过程:

Sub aaa(x,y,z)

z=x^2+y^2

End Sub

在Mobule1中定义了以下过程:

Sub bbb(x,y,z)

z=x^3+y^3

End Sub

在Form1中单击命令按钮Commandl时,调用以上过程计算两个数的平方和与立方和。并分别将结果显示在文本框Text3和Text4中,请在以下程序段中写出相应的调用语句。

Private Sub Commandl_Click( )

a=val(Text1.Text)

b=val(Text2.Text)

Call __【13】__

Text3.Text=cl

__【14】__

Text4.Text=c2

End Sub

9.设有如下程序

Private Sub Form_Click()

Dim a As Integer, b As Integer

a = 20 :b = 50

P1 a, b

p2 a, b

p3 a, b

Print "a=";a,"b=";b

End Sub

Sub p1(x As Integer, ByVal y As Integer)

x = x + 10

y = y + 20

End Sub

Sub p2(ByVal x As Integer, y As Integer)

x = x + 10

y = y + 20

End Sub

Sub p3(ByVal x As Integer, ByVal y As Integer)

x = x + 10

y = y + 20

End Sub

该程序运行后,单击窗体,则在窗体上显示的内容是:a = _【15】___和 b =__【16】__。

10.设有程序

Option Base 1

Private Sub Command1_Click()

Dim arr1,Max as Integer

arr1=Array(12,435,76,24,78,54,866,43)

__【17】___=arr1(1)

For i=1 To 8

If arr1(i)>Max Then_【18】_

Next i

Print"最大值是:";Max

End Sub

以上程序的功能是:用Array函数建立一个含有8个元素的数组,然后查找并输出该数组中元素的最大值。请填空。

11.设有如下程序:

Option Base 1

Private Sub Command1_Click()

Dim arr1

Dim Min As Integer,i As Integer

arr1=Array(12,435,76,-24,78,54,866,43)

Min=__【19】__

For i=2 To 8

If arr1(i)  Next i

Print "最小值是:";Min

End Sub

以上程序的功能是:用 Array 函数建立一个含有8个元素的数组,然后查找并输出该数

组中各元素的最小值。请填空。

参考答案

一、单选题

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

B

C

B

B

A

A

B

B

B

B

C

A

C

D

A

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

B

A

A

B

D

A

C

B

C

A

C

D

C

A

C

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

D

A

D

C

C

C

A

B

D

C

C

D

A

A

D

二、填空题

【1】

a(j, k) = i

【2】

Print Tab(j * 3); a(i, j);

【3】

Print

【4】

Preserve a(n + 1)

【5】

a(i + 1) = a(i)

【6】

a(i + 1) = m

【7】

t = a(j)

【8】

a(j) = a(j + 1)

【9】

6-I

【10】

Print "S(";I;")=";S(I)

【11】

ReDim A(N)

【12】

Text1.Text & Labell(Index).Caption

【13】

Form2.aaa(a,b,c1)

【14】

bbb a,b,c2

【15】

30

【16】

70

【17】

Max

【18】

Max=arr1(i)

【19】

12或arr1(1)

【20】

Min=arr1(i)