内容正文:
编写说明:内蒙古自治区对口招生《计算机类考纲百套卷》,依据《2019年内蒙古自治区高等职业院校对口招收中等职业学校毕业生计算机类专业课综合考试指导纲要》编写。本专辑涵盖四门课程,且每门课程均采用三阶递进式训练体系:基础层(具象化支架)拆解考点为微目标,紧扣考纲“掌握”“理解”要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。
本试卷是第15卷,为考点训练卷,按《Visual Basic程序设计》范围和要求编写。具体内容为:数组基础知识,静态数组,动态数组,控件数组,常用算法实例。
内蒙古对口招生《计算机类考纲百套卷》 第15卷
《Visual Basic程序设计》
数组 考点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、单选题(本题共30道小题,每题2分,共60分)
1.在 Visual Basic 6.0 中,Dim a(-3 To 3) As Integer 声明的数组共包含多少个元素?
A. 5 B. 6
C. 8 D. 7
2.若模块中有 Option Base 1,则 Dim a(3, 4) As Integer 的元素个数为
A. 12 B. 15
C. 16 D. 20
3.以下声明中,能正确声明一个包含 5 个元素、下标从 1 开始的整型数组的是
A. Dim a(5) As Integer
B. Dim a[5] As Integer
C. Dim a(0 To 4) As Integer
D. Dim a(1 To 5) As Integer
4.下列程序段运行后,Print 输出的值是
Dim a(1 To 5) As Integer, i As Integer
For i = 1 To 5
a(i) = i + 10
Next i
Print a(3) + a(4)
A. 25 B. 30
C. 28 D. 27
5.下列程序段运行后,Print 输出的值是
Dim a(1 To 4, 1 To 4) As Integer
Dim i As Integer, j As Integer, s As Integer
For i = 1 To 4
For j = 1 To 4
a(i, j) = i + j
Next j
Next i
s = a(2, 3) + a(3, 2)
A. 8 B. 10
C. 12 D. 14
6.以下程序段运行后,数组 a 中各元素的值之和是
Dim a(1 To 5) As Integer, i As Integer
For i = 1 To 5
a(i) = i * (i + 1)
Next i
A. 40 B. 50
C. 56 D. 70
7.以下程序段运行后,UBound(a) 的返回值是
Dim a() As Integer
ReDim a(1 To 5)
ReDim Preserve a(1 To 8)
ReDim Preserve a(1 To 10)
A. 5 B. 8
C. 15 D. 10
8.以下程序段运行后,变量 s 的值是
Dim a() As Integer, i As Integer, s As Integer
ReDim a(1 To 3)
For i = 1 To 3
a(i) = i * 2
Next i
ReDim a(1 To 3)
s = 0
For i = 1 To 3
s = s + a(i)
Next i
A. 12 B. 6
C. 报错 D. 0
9.控件数组 Command1 有 5 个元素,在 Command1_Click 事件中,要引用第 3 个控件应使用
A. Command1(2) B. Command1(3)
C. Command1.3 D. Command1[3]
10.下列关于 Load 语句添加控件数组元素的说法,错误的是
A. 只能添加已有控件数组的元素
B. 新元素的 Index 不能与已有元素重复
C. 新元素默认 Visible 为 True
D. 新元素需手动设置 Visible = True 才能显示
11.在冒泡排序中,若某一轮比较中没有发生任何交换,说明
A. 数组有错 B. 数组已经有序
C. 需要继续排序 D. 排序失败
12.二分查找算法的时间复杂度为(n 为元素个数)
A. O(1) B. O(n)
C. O(log n) D. O(n^2)
13.下列程序段运行后,变量 t 的值是
Dim a As Variant, i As Integer, t As Integer
a = Array(1, 2, 3, 4, 5)
t = 1
For i = 0 To 4
t = t * a(i)
Next i
A. 15 B. 60
C. 120 D. 720
14.下列程序段运行后,变量 c 的值是
Dim a As Variant, i As Integer, c As Integer
a = Array(10, 15, 22, 31, 44, 55)
c = 0
For i = 0 To 5
If a(i) Mod 2 = 1 Then c = c + 1
Next i
A. 2 B. 3
C. 4 D. 5
15.下列程序段的功能是
Dim a As Variant, i As Integer, j As Integer, t As Integer
a = Array(3, 1, 4, 1, 5, 9, 2, 6)
For i = 0 To 6
k = i
For j = i + 1 To 7
If a(j) < a(k) Then k = j
Next j
If k <> i Then t = a(i): a(i) = a(k): a(k) = t
Next i
A. 冒泡排序(升序) B. 选择排序(升序)
C. 冒泡排序(降序) D. 选择排序(降序)
16.在有序数组中进行二分查找时,设下界 low=0、上界 high=n-1,中间下标 mid 的计算公式是
A. mid = low + high B. mid = (low + high) / 2
C. mid = low * high D. mid = high - low
17.以下程序段运行后,变量 sum 的值是
Dim a(1 To 5, 1 To 5) As Integer
Dim i As Integer, j As Integer, sum As Integer
For i = 1 To 5
For j = 1 To 5
If i = j Then a(i, j) = 1 Else a(i, j) = 0
Next j
Next i
For i = 1 To 5
sum = sum + a(i, i)
Next i
A. 0 B. 1
C. 5 D. 25
18.以下程序段运行后,变量 c 的值是
Dim a(1 To 10) As Integer, i As Integer, c As Integer
For i = 1 To 10
a(i) = i
Next i
c = 0
For i = 1 To 10 Step 2
c = c + a(i)
Next i
A. 25 B. 30
C. 55 D. 15
19.以下程序段运行后,变量 s 的值是
Dim a() As Integer, i As Integer, s As Integer
ReDim a(0 To 4)
For i = 0 To 4
a(i) = (i + 1) * (i + 1)
Next i
ReDim Preserve a(0 To 6)
a(5) = 36: a(6) = 49
s = a(0) + a(5) + a(6)
A. 85 B. 86
C. 87 D. 88
20.窗体上有控件数组 Label1,含 3 个元素(Index 0~2)。以下代码运行后,Label1(1).Caption 的值是
Private Sub Command1_Click()
Dim i As Integer
For i = 0 To 2
Label1(i).Caption = "第" & (i + 1) & "个"
Next i
End Sub
A. 第0个 B. 第1个
C. 第2个 D. 第3个
21.以下程序段运行后,数组 a 的元素顺序是
Dim a As Variant, i As Integer, t As Integer
a = Array(1, 2, 3, 4, 5)
For i = 0 To 1
t = a(i)
a(i) = a(4 - i)
a(4 - i) = t
Next i
A. 5,4,3,2,1 B. 1,2,3,4,5
C. 2,1,3,4,5 D. 5,4,3,1,2
22.在数组中删除第 k 个元素后,元素个数
A. 增加 1 B. 减少 1
C. 不变 D. 变为 0
23.在大小为 n 的数组末尾插入一个新元素,需要移动的元素个数是
A. 0 B. 1
C. n-1 D. n
24.在大小为 n 的数组开头插入一个新元素,需要移动的元素个数是
A. 0 B. 1
C. n-1 D. n
25.以下程序段运行后,Print 输出的值是
Dim a(1 To 6) As Integer, i As Integer
For i = 1 To 6
a(i) = i Mod 3
Next i
Print a(3) + a(6)
A. 0 B. 1
C. 2 D. 3
26.以下程序段的功能是
Dim a As Variant, i As Integer, key As Integer, found As Boolean
a = Array(3, 7, 12, 18, 25, 33, 42)
key = 18
found = False
For i = 0 To 6
If a(i) = key Then
found = True
Exit For
End If
Next i
A. 二分查找 B. 顺序查找
C. 冒泡排序 D. 选择排序
27.以下程序段运行后,变量 sum 的值是
Dim a(1 To 4, 1 To 4) As Integer
Dim i As Integer, j As Integer, sum As Integer
For i = 1 To 4
For j = 1 To 4
a(i, j) = i * j
Next j
Next i
For i = 1 To 4
sum = sum + a(i, i)
Next i
A. 16 B. 20
C. 30 D. 36
28.以下程序段运行后,变量 t 的值是
Dim a As Variant, i As Integer, t As Integer
a = Array(2, 4, 6, 8, 10)
t = a(0)
For i = 1 To 4
t = t - a(i)
Next i
A. -26 B. -28
C. 2 D. 30
29.以下程序段运行后,变量 s 的值是
Dim a As Variant, i As Integer, s As Integer
a = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
s = 0
For i = 1 To 9 Step 2
s = s + a(i) - a(i - 1)
Next i
A. 5 B. 10
C. 15 D. 20
30.以下程序段运行后,变量 n 的值是
Dim a() As Integer, i As Integer, n As Integer
n = 0
For i = 1 To 5
ReDim Preserve a(1 To i)
a(i) = i * i
n = n + a(i)
Next i
A. 25 B. 30
C. 55 D. 15
二、填空题(本题共10道小题,每题2分,共20分)
1.使用 To 关键字声明数组时,格式为 Dim a(下界 ______ 上界) As 类型。
2.数组声明 Dim a(1 To 5, 1 To 5) As Integer 的维数为______。
3.对于二维数组 a(3, 4),要遍历所有元素,外层循环控制______下标变化。
4.Erase 语句对动态数组的作用是______其占用的内存空间。
5.ReDim Preserve 语句在改变数组大小时,只能改变______一维的上界。
6.若要在代码中卸载运行时添加的控件数组元素,应使用______语句。
7.冒泡排序优化时,可设置一个标志变量,若一轮比较中未发生______则提前结束排序。
8.在有序数组中执行二分查找,若中间元素等于目标值,则查找______。
9.在一个有 n 个元素的有序数组中执行二分查找,最多需要比较______次。
10.在数组中插入一个新元素时,应从______向前依次后移元素,以避免覆盖。
三、程序填空题(本题共2道小题,每题10分,共20分)
1.以下程序的功能是:将数组 a 中的元素逆序存放并输出逆序后的数组。请补充完善程序。
Private Sub Command1_Click()
Dim a As Variant
Dim i As Integer, t As Integer, n As Integer
a = Array(10, 20, 30, 40, 50, 60)
n = UBound(a)
For i = 0 To [1]______
t = a(i)
a(i) = [2]______
a(n - i) = [3]______
Next i
For i = 0 To n
Print a(i);
Next i
End Sub
2.以下程序的功能是:在升序排列的数组中用二分查找法查找目标值 key,若找到则输出其下标,否则输出"未找到"。请补充完善程序。
Private Sub Command1_Click()
Dim a As Variant
Dim key As Integer, low As Integer, high As Integer, mid As Integer
a = Array(5, 12, 18, 25, 33, 41, 56, 72, 88)
key = 33
low = 0
high = [1]______
Do While low <= high
mid = (low + high) \ 2
If a(mid) = key Then
Print "找到,下标为"; mid
Exit Do
ElseIf a(mid) < key Then
low = [2]______
Else
high = [3]______
End If
Loop
If low > high Then Print "未找到"
End Sub
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
编写说明:内蒙古自治区对口招生《计算机类考纲百套卷》,依据《2019年内蒙古自治区高等职业院校对口招收中等职业学校毕业生计算机类专业课综合考试指导纲要》编写。本专辑涵盖四门课程,且每门课程均采用三阶递进式训练体系:基础层(具象化支架)拆解考点为微目标,紧扣考纲“掌握”“理解”要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。
本试卷是第15卷,为考点训练卷,按《Visual Basic程序设计》范围和要求编写。具体内容为:数组基础知识,静态数组,动态数组,控件数组,常用算法实例。
内蒙古对口招生《计算机类考纲百套卷》 第15卷
《Visual Basic程序设计》
数组 考点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、单选题(本题共30道小题,每题2分,共60分)
1.在 Visual Basic 6.0 中,Dim a(-3 To 3) As Integer 声明的数组共包含多少个元素?
A. 5 B. 6
C. 8 D. 7
【答案】D
【解析】元素个数 = 上界 - 下界 + 1 = 3 - (-3) + 1 = 7。
2.若模块中有 Option Base 1,则 Dim a(3, 4) As Integer 的元素个数为
A. 12 B. 15
C. 16 D. 20
【答案】A
【解析】Option Base 1 后下界为 1,元素数 = 3 x 4 = 12。
3.以下声明中,能正确声明一个包含 5 个元素、下标从 1 开始的整型数组的是
A. Dim a(5) As Integer
B. Dim a[5] As Integer
C. Dim a(0 To 4) As Integer
D. Dim a(1 To 5) As Integer
【答案】D
【解析】Dim a(1 To 5) 显式指定下标从 1 到 5,共 5 个元素。
4.下列程序段运行后,Print 输出的值是
Dim a(1 To 5) As Integer, i As Integer
For i = 1 To 5
a(i) = i + 10
Next i
Print a(3) + a(4)
A. 25 B. 30
C. 28 D. 27
【答案】D
【解析】a(i) = i + 10,a(3) = 13,a(4) = 14,13 + 14 = 27。
5.下列程序段运行后,Print 输出的值是
Dim a(1 To 4, 1 To 4) As Integer
Dim i As Integer, j As Integer, s As Integer
For i = 1 To 4
For j = 1 To 4
a(i, j) = i + j
Next j
Next i
s = a(2, 3) + a(3, 2)
A. 8 B. 10
C. 12 D. 14
【答案】B
【解析】a(2,3)=2+3=5, a(3,2)=3+2=5, s=5+5=10。
6.以下程序段运行后,数组 a 中各元素的值之和是
Dim a(1 To 5) As Integer, i As Integer
For i = 1 To 5
a(i) = i * (i + 1)
Next i
A. 40 B. 50
C. 56 D. 70
【答案】D
【解析】a(1)=2, a(2)=6, a(3)=12, a(4)=20, a(5)=30,和 = 2+6+12+20+30 = 70。
7.以下程序段运行后,UBound(a) 的返回值是
Dim a() As Integer
ReDim a(1 To 5)
ReDim Preserve a(1 To 8)
ReDim Preserve a(1 To 10)
A. 5 B. 8
C. 15 D. 10
【答案】D
【解析】最后一次 ReDim Preserve a(1 To 10),上界为 10。
8.以下程序段运行后,变量 s 的值是
Dim a() As Integer, i As Integer, s As Integer
ReDim a(1 To 3)
For i = 1 To 3
a(i) = i * 2
Next i
ReDim a(1 To 3)
s = 0
For i = 1 To 3
s = s + a(i)
Next i
A. 12 B. 6
C. 报错 D. 0
【答案】D
【解析】第二个 ReDim 不带 Preserve,清除原有数据,各元素恢复为 0,s = 0+0+0 = 0。
9.控件数组 Command1 有 5 个元素,在 Command1_Click 事件中,要引用第 3 个控件应使用
A. Command1(2) B. Command1(3)
C. Command1.3 D. Command1[3]
【答案】A
【解析】第 3 个控件的 Index 为 2(从 0 开始计数),引用方式为 Command1(2)。
10.下列关于 Load 语句添加控件数组元素的说法,错误的是
A. 只能添加已有控件数组的元素
B. 新元素的 Index 不能与已有元素重复
C. 新元素默认 Visible 为 True
D. 新元素需手动设置 Visible = True 才能显示
【答案】C
【解析】Load 加载的新控件元素默认 Visible 为 False,需设置为 True 才能在窗体上显示。
11.在冒泡排序中,若某一轮比较中没有发生任何交换,说明
A. 数组有错 B. 数组已经有序
C. 需要继续排序 D. 排序失败
【答案】B
【解析】冒泡排序中一轮无交换说明数组已有序,可提前结束排序(优化冒泡)。
12.二分查找算法的时间复杂度为(n 为元素个数)
A. O(1) B. O(n)
C. O(log n) D. O(n^2)
【答案】C
【解析】二分查找每次将范围缩小一半,最多比较 log2(n) 次。
13.下列程序段运行后,变量 t 的值是
Dim a As Variant, i As Integer, t As Integer
a = Array(1, 2, 3, 4, 5)
t = 1
For i = 0 To 4
t = t * a(i)
Next i
A. 15 B. 60
C. 120 D. 720
【答案】C
【解析】t = 1*1*2*3*4*5 = 120(累乘)。
14.下列程序段运行后,变量 c 的值是
Dim a As Variant, i As Integer, c As Integer
a = Array(10, 15, 22, 31, 44, 55)
c = 0
For i = 0 To 5
If a(i) Mod 2 = 1 Then c = c + 1
Next i
A. 2 B. 3
C. 4 D. 5
【答案】B
【解析】奇数元素有 15、31、55 共 3 个,c = 3。
15.下列程序段的功能是
Dim a As Variant, i As Integer, j As Integer, t As Integer
a = Array(3, 1, 4, 1, 5, 9, 2, 6)
For i = 0 To 6
k = i
For j = i + 1 To 7
If a(j) < a(k) Then k = j
Next j
If k <> i Then t = a(i): a(i) = a(k): a(k) = t
Next i
A. 冒泡排序(升序) B. 选择排序(升序)
C. 冒泡排序(降序) D. 选择排序(降序)
【答案】B
【解析】每轮找最小值下标 k 并与 a(i) 交换,是选择排序的升序实现。
16.在有序数组中进行二分查找时,设下界 low=0、上界 high=n-1,中间下标 mid 的计算公式是
A. mid = low + high B. mid = (low + high) / 2
C. mid = low * high D. mid = high - low
【答案】B
【解析】mid = (low + high) / 2,取中间位置进行比较。
17.以下程序段运行后,变量 sum 的值是
Dim a(1 To 5, 1 To 5) As Integer
Dim i As Integer, j As Integer, sum As Integer
For i = 1 To 5
For j = 1 To 5
If i = j Then a(i, j) = 1 Else a(i, j) = 0
Next j
Next i
For i = 1 To 5
sum = sum + a(i, i)
Next i
A. 0 B. 1
C. 5 D. 25
【答案】C
【解析】a(i,j) 在 i=j 时为 1(对角线),sum 累加 5 个对角线元素 1+1+1+1+1=5。
18.以下程序段运行后,变量 c 的值是
Dim a(1 To 10) As Integer, i As Integer, c As Integer
For i = 1 To 10
a(i) = i
Next i
c = 0
For i = 1 To 10 Step 2
c = c + a(i)
Next i
A. 25 B. 30
C. 55 D. 15
【答案】A
【解析】Step 2 取 i=1,3,5,7,9,c=1+3+5+7+9=25。
19.以下程序段运行后,变量 s 的值是
Dim a() As Integer, i As Integer, s As Integer
ReDim a(0 To 4)
For i = 0 To 4
a(i) = (i + 1) * (i + 1)
Next i
ReDim Preserve a(0 To 6)
a(5) = 36: a(6) = 49
s = a(0) + a(5) + a(6)
A. 85 B. 86
C. 87 D. 88
【答案】B
【解析】a(0)=1, a(5)=36, a(6)=49, s=1+36+49=86。
20.窗体上有控件数组 Label1,含 3 个元素(Index 0~2)。以下代码运行后,Label1(1).Caption 的值是
Private Sub Command1_Click()
Dim i As Integer
For i = 0 To 2
Label1(i).Caption = "第" & (i + 1) & "个"
Next i
End Sub
A. 第0个 B. 第1个
C. 第2个 D. 第3个
【答案】C
【解析】i=1 时 Caption = "第" & (1+1) & "个" = "第2个"。
21.以下程序段运行后,数组 a 的元素顺序是
Dim a As Variant, i As Integer, t As Integer
a = Array(1, 2, 3, 4, 5)
For i = 0 To 1
t = a(i)
a(i) = a(4 - i)
a(4 - i) = t
Next i
A. 5,4,3,2,1 B. 1,2,3,4,5
C. 2,1,3,4,5 D. 5,4,3,1,2
【答案】A
【解析】i=0: 交换 a(0) 和 a(4) → 5,2,3,4,1;i=1: 交换 a(1) 和 a(3) → 5,4,3,2,1(数组逆序)。
22.在数组中删除第 k 个元素后,元素个数
A. 增加 1 B. 减少 1
C. 不变 D. 变为 0
【答案】B
【解析】删除一个元素后,数组有效元素个数减少 1。
23.在大小为 n 的数组末尾插入一个新元素,需要移动的元素个数是
A. 0 B. 1
C. n-1 D. n
【答案】A
【解析】在末尾插入不需要移动任何已有元素,直接放在最后即可。
24.在大小为 n 的数组开头插入一个新元素,需要移动的元素个数是
A. 0 B. 1
C. n-1 D. n
【答案】D
【解析】开头插入需将原有 n 个元素全部后移一位。
25.以下程序段运行后,Print 输出的值是
Dim a(1 To 6) As Integer, i As Integer
For i = 1 To 6
a(i) = i Mod 3
Next i
Print a(3) + a(6)
A. 0 B. 1
C. 2 D. 3
【答案】A
【解析】a(3) = 3 Mod 3 = 0, a(6) = 6 Mod 3 = 0, 0+0=0。
26.以下程序段的功能是
Dim a As Variant, i As Integer, key As Integer, found As Boolean
a = Array(3, 7, 12, 18, 25, 33, 42)
key = 18
found = False
For i = 0 To 6
If a(i) = key Then
found = True
Exit For
End If
Next i
A. 二分查找 B. 顺序查找
C. 冒泡排序 D. 选择排序
【答案】B
【解析】从头到尾逐个比较 a(i) 与 key,找到后设置标志并退出,是顺序查找。
27.以下程序段运行后,变量 sum 的值是
Dim a(1 To 4, 1 To 4) As Integer
Dim i As Integer, j As Integer, sum As Integer
For i = 1 To 4
For j = 1 To 4
a(i, j) = i * j
Next j
Next i
For i = 1 To 4
sum = sum + a(i, i)
Next i
A. 16 B. 20
C. 30 D. 36
【答案】C
【解析】a(i,i) = i*i,sum = 1+4+9+16 = 30。
28.以下程序段运行后,变量 t 的值是
Dim a As Variant, i As Integer, t As Integer
a = Array(2, 4, 6, 8, 10)
t = a(0)
For i = 1 To 4
t = t - a(i)
Next i
A. -26 B. -28
C. 2 D. 30
【答案】A
【解析】t = 2 - 4 - 6 - 8 - 10 = -26。
29.以下程序段运行后,变量 s 的值是
Dim a As Variant, i As Integer, s As Integer
a = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
s = 0
For i = 1 To 9 Step 2
s = s + a(i) - a(i - 1)
Next i
A. 5 B. 10
C. 15 D. 20
【答案】A
【解析】i=1: s=0+a(1)-a(0)=2-1=1; i=3: s=1+4-3=2; i=5: s=2+6-5=3; i=7: s=3+8-7=4; i=9: s=4+10-9=5。s=5。
30.以下程序段运行后,变量 n 的值是
Dim a() As Integer, i As Integer, n As Integer
n = 0
For i = 1 To 5
ReDim Preserve a(1 To i)
a(i) = i * i
n = n + a(i)
Next i
A. 25 B. 30
C. 55 D. 15
【答案】C
【解析】每次循环扩展数组并赋值,a(1)=1,a(2)=4,a(3)=9,a(4)=16,a(5)=25, n=1+4+9+16+25=55。
二、填空题(本题共10道小题,每题2分,共20分)
1.使用 To 关键字声明数组时,格式为 Dim a(下界 ______ 上界) As 类型。
【答案】To
【解析】如 Dim a(-3 To 3) 表示下标从 -3 到 3。
2.数组声明 Dim a(1 To 5, 1 To 5) As Integer 的维数为______。
【答案】2(二维)
【解析】有两个下标范围,说明是二维数组。
3.对于二维数组 a(3, 4),要遍历所有元素,外层循环控制______下标变化。
【答案】第一维(行)
【解析】二维数组遍历时,通常外层循环控制行(第一维),内层循环控制列(第二维)。
4.Erase 语句对动态数组的作用是______其占用的内存空间。
【答案】释放
【解析】Erase 对动态数组释放内存,对静态数组仅清除元素值(恢复默认值)。
5.ReDim Preserve 语句在改变数组大小时,只能改变______一维的上界。
【答案】最后
【解析】Preserve 保留原有数据,只能改变最后一维的上界。
6.若要在代码中卸载运行时添加的控件数组元素,应使用______语句。
【答案】Unload
【解析】Unload 语句用于卸载通过 Load 动态添加的控件元素。
7.冒泡排序优化时,可设置一个标志变量,若一轮比较中未发生______则提前结束排序。
【答案】交换
【解析】若一轮中没有任何交换,说明数组已有序,可提前退出排序。
8.在有序数组中执行二分查找,若中间元素等于目标值,则查找______。
【答案】成功(结束)
【解析】找到目标值即查找成功,可以结束查找过程。
9.在一个有 n 个元素的有序数组中执行二分查找,最多需要比较______次。
【答案】log2(n)(向下取整加1)
【解析】每次比较将范围缩小一半,最多比较 log2(n) 次(向下取整后加 1)。
10.在数组中插入一个新元素时,应从______向前依次后移元素,以避免覆盖。
【答案】最后一个元素(末尾)
【解析】从末尾向前依次后移,避免从前向后移动时覆盖后面的元素。
三、程序填空题(本题共2道小题,每题10分,共20分)
1.以下程序的功能是:将数组 a 中的元素逆序存放并输出逆序后的数组。请补充完善程序。
Private Sub Command1_Click()
Dim a As Variant
Dim i As Integer, t As Integer, n As Integer
a = Array(10, 20, 30, 40, 50, 60)
n = UBound(a)
For i = 0 To [1]______
t = a(i)
a(i) = [2]______
a(n - i) = [3]______
Next i
For i = 0 To n
Print a(i);
Next i
End Sub
【答案】n \ 2;a(n - i);t
【解析】只需交换前半部分与后半部分,循环到 n 整除 2;交换 a(i) 与 a(n-i),借助临时变量 t。
2.以下程序的功能是:在升序排列的数组中用二分查找法查找目标值 key,若找到则输出其下标,否则输出"未找到"。请补充完善程序。
Private Sub Command1_Click()
Dim a As Variant
Dim key As Integer, low As Integer, high As Integer, mid As Integer
a = Array(5, 12, 18, 25, 33, 41, 56, 72, 88)
key = 33
low = 0
high = [1]______
Do While low <= high
mid = (low + high) \ 2
If a(mid) = key Then
Print "找到,下标为"; mid
Exit Do
ElseIf a(mid) < key Then
low = [2]______
Else
high = [3]______
End If
Loop
If low > high Then Print "未找到"
End Sub
【答案】UBound(a);mid + 1;mid - 1
【解析】high 初始为数组上界 UBound(a);当 a(mid) < key 时,目标在右半部分,low = mid + 1;当 a(mid) > key 时,目标在左半部分,high = mid - 1。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$