内容正文:
专题六 数组
一:单选题
1:在Visual Basic中,语句Option Base n定义数组下标下界时,n可以是( )
A.0
B.1
C.0或1
D.任意数
【答案】C
【解析】在 Visual Basic 中,Option Base n语句用于设置数组下标的默认下界。该语句中的n只能取两个值:0 或 1。
2:用Dim语句声明某动态数组后,不能建立该数组的是( )语句。
A. ReDim
B. 使用Array函数
C. Dim
D. 数组对数组赋值"
【答案】C
【解析】Dim仅用于声明数组,对于已用Dim声明的动态数组,再次使用Dim会导致 “重复声明” 错误,且无法创建数组。
3:在Visual Basic中,关于控件数组的叙述,正确的是( )
A.控件数组中所有控件的名称相同,但其Index属性值各不相同
B.控件数组中所有控件的名称相同,但其Value属性值各不相同
C.控件数组中每个元素都是独立的控件,因此都有各自的事件过程
D.以上说法都正确
【答案】A
【解析】控件数组中所有控件共享同一个名称,通过唯一的Index属性值(非负整数)区分不同元素。
4:数组声明语句Dim a(0 to 3, -2 to 2,0 to 5)中,数组a包含元素的个数为( )。
A.120
B.75
C.60
D.13
【答案】A
【解析】第一维:下界为 0,上界为 3,长度为 3 - 0 + 1 = 4;第二维:下界为 - 2,上界为 2,长度为 2 - (-2) + 1 = 5;第三维:下界为 0,上界为 5,长度为 5 - 0 + 1 = 6。因此,数组元素的总个数为 4 × 5 × 6 = 120
5:下列程序
Option Base 1
Private Sub Form_Click()
Dim a
a=Array(19,17,15,13,11,9,7,5,3,11)
For i=1 To 10
If a(i)/3=a(i)\3 Or a(i)/5=a(i)\5 Then
Sum=Sum+a(i)
End If
Next i
Print "Sum="; Sum
End Sub
运行时输出Sum的值是( )
A.27
B.15
C.32
D.20
【答案】C
【解析】程序的功能是计算数组中能被 3 或 5 整除的元素之和。
6:在Visual Basic中,设有数组声明语句:
Option Base 0
Dim b(-1 To 10, 2 To 9,20)
则数组b中共有( )个元素。
A.1800
B.1920
C.2016
D.2310
【答案】C
【解析】第一维:-1 到 10 → 12 个元素;第二维:2 到 9 → 8 个元素;第三维:0 到 20 → 21 个元素;总数:12×8×21=2016。
7:在Visual Basic中,下列数组定义的语句中,错误的是( )
A.Dim a(10)as Integer
B.Dim a(0 to 5,1 to 3)as Integer
C.Dime a(3,5)as Integer
D.Dim a(3,1 to 4)as Integer
【答案】C
【解析】在 Visual Basic 中,数组定义的正确关键字是Dim,语法格式为Dim 数组名(下标范围) As 数据类型。
8:在Visual Basic中,声明一个动态数组,下列语句正确的是( )
A.Dim a(n) as Integer
B.Dim a( ) as Integer
C. Dim a( , ) as Integer
D. Dim a(1 to n)
【答案】B
【解析】Dim a( ) as Integer使用空括号声明,符合动态数组的声明语法,后续可通过ReDim指定大小。
9:在Visual Basic中,关于数组的叙述,下列说法正确的是( )
A.数组名的命名规则与简单变量相同
B.使用Static语句定义任何类型的数组时,都把该数组的全部元素初始化为0
C.使用Dim语句定义任何类型的数组时,都把该数组的全部元素初始化为空字符串
D.VB支持数组的隐式定义
【答案】A
【解析】Static语句用于定义静态数组,但其初始化规则取决于数据类型;Dim语句定义的数组初始化规则同样依赖数据类型;VB 中数组必须先声明(显式定义)后使用,不支持隐式定义。
10:在Visual Basic中,下列说法不正确的是( )
A.使用ReDim语句可以改变数组的维数
B.使用ReDim语句可以改变数组的类型
C.使用ReDim语句可以改变数组的每一维的大小
D.ReDim语句可以使原数组中的内容被清除
【答案】B
【解析】ReDim语句不能改变数组的数据类型。数组的类型在首次声明(如Dim arr() As Integer)时确定,后续ReDim只能调整大小,无法修改类型。
11:下列关于数组的说法中,正确的是( )
A.一个数组中只能包含相同类型的数据
B.数组只能在模块中定义,不能在过程中定义
C.在有些情况下,数组与普通变量一样可以不定义,先使用
D.定义数组时,数组中的每一维元素的个数必须是常量,不能是变量或表达式
【答案】A
【解析】数组既可以在模块级定义,也可以在过程级中定义;在 Visual Basic 中,数组必须先定义后使用;定义静态数组时,各维度元素个数必须是常量;但定义动态数组时,可先声明为空数组,再通过ReDim语句用变量或表达式指定大小。
12:在窗体上画一个名称为 Label1 的标签,然后编写如下事件过程:
Private Sub Form_Click( )
Dim arr(10, 10) 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
Next i
Label1.Caption = Str(arr(2, 3) + arr(3, 4))
End Sub程序运行后,单击窗体,在标签中显示的内容是( )
A. 12
B. 13
C. 15
D. 18
【答案】D
【解析】程序的功能是给二维数组部分元素赋值后,计算指定元素的和并显示。
13:数组 a(-3 to 5,4)中共有( )个元素。
A.45
B.32
C.36
D.40
【答案】A
【解析】第一维:下界为 - 3,上界为 5,长度为 5 - (-3) + 1 = 9;第二维:未显式指定下界,默认下界为 0,上界为 4,长度为 4 - 0 + 1 = 5。因此,数组元素的总个数为 9 × 5 = 45。
14:设整数型一维数组a的下标从1开始,有10个变量,对该数组的操作有如下事件过程:
Private Sub Command1_Click()
Dim i As Integer, j As Integer, k As Integer
For i = 1 To 9
For j = i + 1 To 10
If a(i) > a(j) Then
k = a(i)
a(i) = a(j)
a(j) = k
Enf
next j
Next i
End Sub
关于该过程功能的叙述正确的是( )。
A.该过程能对数组a进行升序排序
B.该过程能对数组a进行降序排序
C.该过程能对数组a进行逆序存放
D.该过程能对数组a逆序存放后又顺序存放
【答案】A
【解析】该事件过程实现的是冒泡排序算法。
15:设执行以下程序段时依次输入1、3、5,执行结果为( )。
Dim a(4) As Integer
Dim 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)
A.1
B.3
C. 5
D.0
【答案】A
【解析】当K=0时:输入 1,a(0+1)=a(1)=1;b(3-0)=b(3)=a(1)=1。当K=1时:输入 3,a(1+1)=a(2)=3;b(3-1)=b(2)=a(2)=3。当K=2时:输入 5,a(2+1)=a(3)=5;b(3-2)=b(1)=a(3)=5。循环结束后:K的值为 3。输出b(K)=b(3),而b(3)在K=0时被赋值为 1。
16:设有如下程序:
Private Sub form_Click()
Dim a(10) As Integer,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.35
C. 37
D.38
【答案】A
【解析】第一个循环i=1 to 10,a(i)=i,则a(1)=1,a(4)=4,a(9)=9正确。第三个循环计算:k = 5 + (1×2) + (4×2) + (9×2) = 5 + 2 + 8 + 18 = 33。
17:对动态数组ReDim Preserve(X,Y)操作中参数X和Y是指( )
A. 改变ReDim Preserve操作前的大小
B. 改变ReDim Preserve操作后的位置
C. 改变ReDim Preserve操作后的大小
D. 改变ReDim Preserve操作前的位置
【答案】C
【解析】ReDim语句用于重新定义动态数组的大小,Preserve关键字用于保留数组中原来的数据。ReDim Preserve(X,Y)中,X和Y表示重新定义后数组的大小。
18:在Visual Basic中,有下列代码:
Private Sub Form_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
运行程序,单击窗体,依次输入3,6,9,程序的运行结果为( )
A.1
B.3
C.6
D.9
【答案】B
【解析】循环变量K在Next K后自动加 1,退出循环时K=3。输出B(K)=B(3),而B(3)在K=0时被赋值为 3。
19:在Visual Basic中,有以下程序代码:
Private Sub Command1_Click()
A = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
N = UBound(A)
For K = 0 To UBound(A) / 2
Print A(K) * A(N);
N = N - 1
Next K
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
【答案】D
【解析】具体循环过程:K=0:A(0)*A(9) = 1*10 = 10,N=8;K=1:A(1)*A(8) = 2*9 = 18,N=7;K=2:A(2)*A(7) = 3*8 = 24,N=6;K=3:A(3)*A(6) = 4*7 = 28,N=5;K=4:A(4)*A(5) = 5*6 = 30,N=4。输出结果:依次输出的乘积为10 18 24 28 30。
20:在Visual Basic中,有如下代码:
Option Base 1
Private Sub Command1_Click()
Dim a(3, 3) As Integer
Dim i As Integer, j As Integer, s As Integer
s = 0
For i = LBound(a, 1) To UBound(a, 1)
For j = LBound(a, 2) To UBound(a, 2)
a(i, j) = (i - 1) * 3 + j
If i >= j Then
s = s + a(i, j)
End If
Next j
Next i
Print s
End Sub
运行程序时,单击命令按钮,窗体上的输出结果为( )
A.15
B.19
C.26
D.34
【答案】D
【解析】i >= j的元素和为1+4+5+7+8+9=34。
二:填空题
1:如果有声明Dim a(5) As Integer,则该数组共占用______个字节内存。
【答案】12
【解析】总占用内存为:元素个数 × 每个元素占用字节数 = 6 × 2 = 12 字节。
2:下列语句Dim a(-1 to 3,4)声明的数组a包含的数组元素个数有_____________个。
【答案】25
【解析】在 Visual Basic 中,计算二维数组元素个数的方法是各维度(上界 - 下界 + 1)的乘积。
3:要声明一个长度为256个字符的定长字符串变量str,正确的语句是__________。
【答案】Dim str As String*256
【解析】在 Visual Basic 中,声明定长字符串变量的语法为Dim 变量名 As String * 长度,其中*用于指定字符串的固定长度。因此,声明一个长度为 256 个字符的定长字符串变量str,正确的语句是Dim str As String * 256。
4:在使用ReDim语句重新定义数组时,为保留原先的数据,应使用关键字____________。
【答案】preserve
【解析】在 Visual Basic 中,ReDim语句用于重新定义动态数组的大小。若需要保留数组中原有的数据,必须使用Preserve关键字。
5:一组具有相同名称,不同下标的下标变量称为______。
【答案】数组
【解析】在 Visual Basic 中,数组是由一组具有相同名称、不同下标的变量(即下标变量)组成的集合。
6:对动态数组arr进行重新定义,使其包含 5 个元素且保留原有数据,正确的语句是_______。
【答案】ReDim Preserve arr(1 To 5)或 ReDim Preserve arr (0 To 4)
【解析】在 Visual Basic 中,ReDim语句用于重新定义动态数组的大小,Preserve关键字用于保留数组中原有的数据。
7:控件数组由一组_______相同、_______不同的控件组成,它们共享同一个事件过程。
【答案】名称;索引
【解析】控件数组的所有控件必须拥有相同的Name属性(名称),通过唯一的Index属性(索引,整数)区分不同元素。
8:若有一个标签控件数组Label1,要设置索引为 2 的标签标题为 “Hello”,语句为_______。
【答案】Label1(2).Caption = "Hello"
【解析】访问控件数组的某个元素时,需通过 “数组名 (索引)” 指定,再操作其属性。例如Label1(2)表示控件数组中索引为 2 的标签,通过.Caption属性设置标题。
9:控件数组的Index属性值的类型是_______,且在数组内必须_______。
【答案】整数(Integer);唯一
【解析】Index属性的值只能是整数(可正可负,如 - 1、0、1),但同一控件数组中不能有重复的Index,否则会导致冲突。
10:下列程序
Option Base 1
Private Sub Form_Click()
Dim a(100)
For i=1 To 10
j=i*i
a(j)=j
Next i
Print a(25);
End Sub
程序运行时输出的结果是_________。
【答案】25
【解析】循环中当i=5时,j=25,a(25)被赋值为 25,因此输出结果为 25。
三:程序填空题
1:在visual basic中,对具有10个数的数组,求最大值、平均值,数组中超过平均值的个数,并显示数组的值和计算的结果。
Option Base 1
Private Sub Form_Click()
Dim x, max As Integer, imax As Integer
Dim s As Integer, n As Integer
Dim avg As Integer, k
x = Array(1, 10, 2, 5, 8, 9, 6, 7, 3, 9)
Print x(1);
max = x(1): imax = 1: s = x(10)
For i = 2 To 10
x(i) = Int(100 * Rnd + 1)
Print x(i);
s = s + x(i)
If x(i) > max Then ____(1)______________
Next i
avg = s / 10
Print
For Each k In x
If _____(2)___________Then n = n + 1
Next k
Print max, avg, n
End Sub
【答案】
(1) max = x(i)
(2) k > avg
【解析】求数组中的最大值和最小值,思路是假定数组中的第一个元素为最大值或最小值,依次与数组中的其他元素做对比,最终求出结果。
2. 下列程序的功能是找出n×m矩阵中的最大数及其位置。请将程序补充完整。
Private Sub Command1_Click()
N = InputBox("请输入数组第一维上界")
M = InputBox("请输入数组第二维上界")
__(1)________ A(N, M)
For i = 1 To N
For j = 1 To M
___(2)_______ = InputBox("请输入数组元素 A(" & i & "," & j & ")")
Next j
Next i
End Sub
Private Sub Command2_Click()
Max = ____(3)______
For i = 1 To N
For j = 1 To M
If Max < A(i, j) Then
Max = ___(4)_______
I1 = ___(5)_______
J1 = ____(6)______
End If
Next j
Next i
End Sub
【答案】
(1)ReDim
(2)A(i, j)
(3)A(1, 1)
(4)A(i, j)
(5)i
(6)j
【解析】本题考查动态数组与最大值查找。数组A需用ReDim动态定义;输入数组元素A(i,j);初始Max设为第一个元素A(1,1);找到更大值时,更新Max为A(i,j),记录位置i和j。
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
专题六 数组
一:单选题
1:在Visual Basic中,语句Option Base n定义数组下标下界时,n可以是( )
A.0
B.1
C.0或1
D.任意数
2:用Dim语句声明某动态数组后,不能建立该数组的是( )语句。
A. ReDim
B. 使用Array函数
C. Dim
D. 数组对数组赋值"
3:在Visual Basic中,关于控件数组的叙述,正确的是( )
A.控件数组中所有控件的名称相同,但其Index属性值各不相同
B.控件数组中所有控件的名称相同,但其Value属性值各不相同
C.控件数组中每个元素都是独立的控件,因此都有各自的事件过程
D.以上说法都正确
4:数组声明语句Dim a(0 to 3, -2 to 2,0 to 5)中,数组a包含元素的个数为( )。
A.120
B.75
C.60
D.13
5:下列程序
Option Base 1
Private Sub Form_Click()
Dim a
a=Array(19,17,15,13,11,9,7,5,3,11)
For i=1 To 10
If a(i)/3=a(i)\3 Or a(i)/5=a(i)\5 Then
Sum=Sum+a(i)
End If
Next i
Print "Sum="; Sum
End Sub
运行时输出Sum的值是( )
A.27
B.15
C.32
D.20
6:在Visual Basic中,设有数组声明语句:
Option Base 0
Dim b(-1 To 10, 2 To 9,20)
则数组b中共有( )个元素。
A.1800
B.1920
C.2016
D.2310
7:在Visual Basic中,下列数组定义的语句中,错误的是( )
A.Dim a(10)as Integer
B.Dim a(0 to 5,1 to 3)as Integer
C.Dime a(3,5)as Integer
D.Dim a(3,1 to 4)as Integer
8:在Visual Basic中,声明一个动态数组,下列语句正确的是( )
A.Dim a(n) as Integer
B.Dim a( ) as Integer
C. Dim a( , ) as Integer
D. Dim a(1 to n)
9:在Visual Basic中,关于数组的叙述,下列说法正确的是( )
A.数组名的命名规则与简单变量相同
B.使用Static语句定义任何类型的数组时,都把该数组的全部元素初始化为0
C.使用Dim语句定义任何类型的数组时,都把该数组的全部元素初始化为空字符串
D.VB支持数组的隐式定义
10:在Visual Basic中,下列说法不正确的是( )
A.使用ReDim语句可以改变数组的维数
B.使用ReDim语句可以改变数组的类型
C.使用ReDim语句可以改变数组的每一维的大小
D.ReDim语句可以使原数组中的内容被清除
11:下列关于数组的说法中,正确的是( )
A.一个数组中只能包含相同类型的数据
B.数组只能在模块中定义,不能在过程中定义
C.在有些情况下,数组与普通变量一样可以不定义,先使用
D.定义数组时,数组中的每一维元素的个数必须是常量,不能是变量或表达式
12:在窗体上画一个名称为 Label1 的标签,然后编写如下事件过程:
Private Sub Form_Click( )
Dim arr(10, 10) 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
Next i
Label1.Caption = Str(arr(2, 3) + arr(3, 4))
End Sub程序运行后,单击窗体,在标签中显示的内容是( )
A. 12
B. 13
C. 15
D. 18
13:数组 a(-3 to 5,4)中共有( )个元素。
A.45
B.32
C.36
D.40
14:设整数型一维数组a的下标从1开始,有10个变量,对该数组的操作有如下事件过程:
Private Sub Command1_Click()
Dim i As Integer, j As Integer, k As Integer
For i = 1 To 9
For j = i + 1 To 10
If a(i) > a(j) Then
k = a(i)
a(i) = a(j)
a(j) = k
Enf
next j
Next i
End Sub
关于该过程功能的叙述正确的是( )。
A.该过程能对数组a进行升序排序
B.该过程能对数组a进行降序排序
C.该过程能对数组a进行逆序存放
D.该过程能对数组a逆序存放后又顺序存放
15:设执行以下程序段时依次输入1、3、5,执行结果为( )。
Dim a(4) As Integer
Dim 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)
A.1
B.3
C. 5
D.0
16:设有如下程序:
Private Sub form_Click()
Dim a(10) As Integer,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.35
C. 37
D.38
17:对动态数组ReDim Preserve(X,Y)操作中参数X和Y是指( )
A. 改变ReDim Preserve操作前的大小
B. 改变ReDim Preserve操作后的位置
C. 改变ReDim Preserve操作后的大小
D. 改变ReDim Preserve操作前的位置
18:在Visual Basic中,有下列代码:
Private Sub Form_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
运行程序,单击窗体,依次输入3,6,9,程序的运行结果为( )
A.1
B.3
C.6
D.9
19:在Visual Basic中,有以下程序代码:
Private Sub Command1_Click()
A = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
N = UBound(A)
For K = 0 To UBound(A) / 2
Print A(K) * A(N);
N = N - 1
Next K
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
20:在Visual Basic中,有如下代码:
Option Base 1
Private Sub Command1_Click()
Dim a(3, 3) As Integer
Dim i As Integer, j As Integer, s As Integer
s = 0
For i = LBound(a, 1) To UBound(a, 1)
For j = LBound(a, 2) To UBound(a, 2)
a(i, j) = (i - 1) * 3 + j
If i >= j Then
s = s + a(i, j)
End If
Next j
Next i
Print s
End Sub
运行程序时,单击命令按钮,窗体上的输出结果为( )
A.15
B.19
C.26
D.34
二:填空题
1:如果有声明Dim a(5) As Integer,则该数组共占用______个字节内存。
2:下列语句Dim a(-1 to 3,4)声明的数组a包含的数组元素个数有_____________个。
3:要声明一个长度为256个字符的定长字符串变量str,正确的语句是__________。
4:在使用ReDim语句重新定义数组时,为保留原先的数据,应使用关键字____________。
5:一组具有相同名称,不同下标的下标变量称为______。
6:对动态数组arr进行重新定义,使其包含 5 个元素且保留原有数据,正确的语句是_______。
7:控件数组由一组_______相同、_______不同的控件组成,它们共享同一个事件过程。
8:若有一个标签控件数组Label1,要设置索引为 2 的标签标题为 “Hello”,语句为_______。
9:控件数组的Index属性值的类型是_______,且在数组内必须_______。
10:下列程序
Option Base 1
Private Sub Form_Click()
Dim a(100)
For i=1 To 10
j=i*i
a(j)=j
Next i
Print a(25);
End Sub
程序运行时输出的结果是_________。
三:程序填空题
1:在visual basic中,对具有10个数的数组,求最大值、平均值,数组中超过平均值的个数,并显示数组的值和计算的结果。
Option Base 1
Private Sub Form_Click()
Dim x, max As Integer, imax As Integer
Dim s As Integer, n As Integer
Dim avg As Integer, k
x = Array(1, 10, 2, 5, 8, 9, 6, 7, 3, 9)
Print x(1);
max = x(1): imax = 1: s = x(10)
For i = 2 To 10
x(i) = Int(100 * Rnd + 1)
Print x(i);
s = s + x(i)
If x(i) > max Then ____(1)______________
Next i
avg = s / 10
Print
For Each k In x
If _____(2)___________Then n = n + 1
Next k
Print max, avg, n
End Sub
2. 下列程序的功能是找出n×m矩阵中的最大数及其位置。请将程序补充完整。
Private Sub Command1_Click()
N = InputBox("请输入数组第一维上界")
M = InputBox("请输入数组第二维上界")
__(1)________ A(N, M)
For i = 1 To N
For j = 1 To M
___(2)_______ = InputBox("请输入数组元素 A(" & i & "," & j & ")")
Next j
Next i
End Sub
Private Sub Command2_Click()
Max = ____(3)______
For i = 1 To N
For j = 1 To M
If Max < A(i, j) Then
Max = ___(4)_______
I1 = ___(5)_______
J1 = ____(6)______
End If
Next j
Next i
End Sub
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$