内容正文:
编写说明:内蒙古自治区对口招生《计算机类考纲百套卷》,依据《2019年内蒙古自治区高等职业院校对口招收中等职业学校毕业生计算机类专业课综合考试指导纲要》编写。本专辑涵盖四门课程,且每门课程均采用三阶递进式训练体系:基础层(具象化支架)拆解考点为微目标,紧扣考纲“掌握”“理解”要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。
本试卷是第18卷,为考点训练卷,按《Visual Basic程序设计》范围和要求编写。具体内容为:事件过程,子过程,过程间参数的传递,过程的嵌套与递归,常用算法实例。
内蒙古对口招生《计算机类考纲百套卷》 第18卷
《Visual Basic程序设计》
过程 考点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、单选题(本题共30道小题,每题2分,共60分)
1.TextBox 控件的 KeyPress 事件在______时触发。
A. 文本框获得焦点时 B. 鼠标移过文本框时
C. 文本框内容改变时 D. 用户按下并释放一个 ANSI 键时
2.下列事件中,不属于窗体事件的是
A. Load B. Click
C. Unload D. Timer
3.在 MouseMove 事件中,可以获得______信息。
A. 鼠标按键状态 B. 键盘按键状态
C. 仅鼠标坐标 D. 鼠标当前坐标和按键状态
4.Load 事件和 Activate 事件的触发顺序是
A. 先 Load 后 Activate B. 先 Activate 后 Load
C. 同时触发 D. 随机触发
5.以下程序段运行后,Print 输出的值是
Private Sub Command1_Click()
Print Test(3)
End Sub
Private Function Test(ByVal x As Integer) As Integer
x = x + 2
Test = x * x
End Function
A. 9 B. 16
C. 25 D. 49
6.以下关于 VB 中过程的说法,错误的是
A. Sub 过程可以有参数 B. Function 过程可有多个参数
C. Sub 过程可以没有参数 D. Function 过程必须至少有一个参数
7.以下程序段运行后,a(1) 和 a(2) 的值分别是
Private Sub Modify(ByRef x As Integer, ByVal y As Integer)
x = x + y
y = x - y
End Sub
Private Sub Command1_Click()
Dim a(1 To 2) As Integer
a(1) = 5: a(2) = 3
Call Modify(a(1), a(2))
Print a(1), a(2)
End Sub
A. 5 3 B. 8 5
C. 8 3 D. 5 5
8.调用过程时,参数的传递顺序是
A. 随机顺序 B. 按实参值的大小顺序
C. 按形参名的字母顺序 D. 按形参定义的先后顺序对应
9.以下程序段运行后,Print n 的值是
Private Sub A()
n = n + 1
End Sub
Private Sub B()
Call A
n = n * 2
Call A
End Sub
Private Sub Command1_Click()
n = 2
Call B
Print n
End Sub
(设 n 为模块级变量)
A. 5 B. 6
C. 7 D. 10
10.在 LostFocus 事件中,______。
A. 控件获得焦点时触发 B. 控件被单击时触发
C. 控件内容改变时触发 D. 控件失去焦点时触发
11.以下程序段运行后,变量 r 的值是
Private Function F(ByVal n As Integer) As Integer
If n = 0 Then
F = 0
Else
F = n Mod 10 + F(n \ 10)
End If
End Function
Private Sub Command1_Click()
Dim r As Integer
r = F(258)
Print r
End Sub
A. 8 B. 13
C. 15 D. 17
12.设有以下 Function 过程,Print F(3) 的值是
Private Function F(ByVal n As Integer) As Integer
Static s As Integer
s = s + n
F = s
End Function
Private Sub Command1_Click()
Print F(1)
Print F(2)
Print F(3)
End Sub
A. 1 2 3 B. 1 3 5
C. 1 1 1 D. 1 3 6
13.以下程序段运行后,Print 分别输出的值是
Private Sub PlusOne(ByVal a As Integer, ByRef b As Integer)
a = a + 1
b = b + 1
End Sub
Private Sub Command1_Click()
Dim x As Integer, y As Integer
x = 4: y = 4
Call PlusOne(x, y)
Print x
Call PlusOne(y, x)
Print y
End Sub
A. 4 5 B. 5 4
C. 4 4 D. 5 5
14.以下递归函数运行后,F(5) 的值是
Private Function F(ByVal n As Integer) As Integer
If n <= 1 Then
F = 1
Else
F = F(n - 1) + F(n - 2)
End If
End Function
A. 5 B. 6
C. 8 D. 13
15.递归过程的“递推阶段”结束后进入“回归阶段”,回归过程中依次
A. 继续向更小问题递推
B. 从最后一次递归开始
C. 重新从基例开始计算
D. 释放所有变量并退出
16.用非递归方法求斐波那契数列第 n 项,核心思路是
A. 用循环逐项累加,保存前两项的值
B. 用循环从 n 到 1 累乘
C. 用冒泡排序找出第 n 项
D. 用二分查找定位第 n 项
17.以下程序段运行后,变量 g 的值是
Private Sub Command1_Click()
Dim a As Integer, b As Integer, g As Integer
a = 72: b = 27
Do While b <> 0
Dim t As Integer
t = a Mod b
a = b: b = t
Loop
g = a
End Sub
A. 3 B. 9
C. 12 D. 18
18.用递归方法计算 a 的 n 次方(n>=0),基例为
A. n = 0 时返回 0 B. n = 0 时返回 1
C. n = 1 时返回 0 D. n = 1 时返回 a
19.以下程序段运行后,变量 n 的值是
Private Sub P1(ByRef a As Integer)
a = a + 1
Call P2(a)
End Sub
Private Sub P2(ByVal b As Integer)
b = b * 2
End Sub
Private Sub Command1_Click()
Dim n As Integer
n = 3
Call P1(n)
Print n
End Sub
A. 3 B. 4
C. 7 D. 8
20.以下程序段的功能是判断 n 是否为素数,程序段中空处应填
Dim i As Integer, flag As Boolean
flag = True
For i = 2 To Int(Sqr(n))
If ______ Then
flag = False
Exit For
End If
Next i
A. n Mod i = 0 B. n Mod i <> 0
C. n \ i = 0 D. n / i = 1
21.以下程序段运行后,变量 c 的值是
Private Sub Command1_Click()
Dim n As Integer, c As Integer
n = 100: c = 0
Do While n > 0
c = c + (n Mod 10)
n = n \ 10
Loop
Print c
End Sub
A. 1 B. 3
C. 10 D. 100
22.以下程序段运行后,Print 输出的值是
Private Function G(ByVal n As Integer) As Integer
If n <= 1 Then
G = 1
Else
G = n * G(n - 2)
End If
End Function
Private Sub Command1_Click()
Print G(6)
End Sub
A. 6 B. 24
C. 48 D. 720
23.VB 中的 ParamArray 关键字用于
A. 定义固定数量的参数
B. 定义参数数组
C. 定义可选参数
D. 定义静态数组参数
24.在 Unload 事件中,将 Cancel 参数设为 True 的作用是
A. 强制关闭窗体 B. 取消窗体的关闭操作
C. 刷新窗体 D. 隐藏窗体
25.以下程序段运行后,变量 s 的值是
Private Sub Command1_Click()
Dim n As Integer, s As Integer
n = 12321
s = 0
Do While n > 0
s = s * 10 + n Mod 10
n = n \ 10
Loop
Print s
End Sub
A. 12321 B. 12345
C. 54321 D. 0
26.以下程序段运行后,Print x, y 输出的值是
Private Sub Command1_Click()
Dim x As Integer, y As Integer
x = 1: y = 1
Call Test((x), (y))
Print x, y
End Sub
Private Sub Test(ByRef a As Integer, ByRef b As Integer)
a = a + 1: b = b + 1
End Sub
A. 2 2 B. 1 1
C. 2 1 D. 1 2
27.以下程序段运行后,F(4) 的值是
Private Function F(ByVal n As Integer) As Integer
If n = 1 Then
F = 1
ElseIf n Mod 2 = 0 Then
F = n + F(n / 2)
Else
F = F(n - 1)
End If
End Function
A. 4 B. 7
C. 11 D. 10
28.求 1 到 100 之间所有素数的和,最合适的核心算法是
A. 对每个数用循环判断是否为素数,是则累加
B. 用冒泡排序后累加
C. 用选择排序后累加
D. 用二分查找定位后累加
29.以下程序段运行后,Print 输出的值是
Private Function F(ByVal n As Integer) As Integer
Dim i As Integer
F = 1
For i = 1 To n
F = F * i
Next i
End Function
Private Sub Command1_Click()
Print F(6) / F(4)
End Sub
A. 6 B. 24
C. 30 D. 720
30.以下程序段运行后,Print a, b 的值是
Private Sub P(ByRef x As Integer, ByRef y As Integer)
x = x + 2
y = y + x
End Sub
Private Sub Command1_Click()
Dim a As Integer, b As Integer
a = 3: b = 3
Call P(a, b)
Print a, b
End Sub
A. 5 8 B. 3 8
C. 5 3 D. 5 10
二、填空题(本题共10道小题,每题2分,共20分)
1.窗体关闭前触发的事件是______事件,可通过其 Cancel 参数控制是否允许关闭。
2.当一个控件失去输入焦点时触发______事件。
3.在 Visual Basic 6.0 中,用于接收不确定数量参数的机制是______关键字。
4.调用过程时若在实参外加括号,如 Call Test((x)),则会强制将______方式改为传值。
5.递归过程中,递归调用的______阶段从基例开始,逐层返回计算结果。
6.递归过程每次调用自身时,系统会在______中为本次调用分配存储空间。
7.用递推方法求斐波那契数列第 n 项,核心是通过______逐项向前计算。
8.计算 a 的 n 次幂(n>=0),递推关系为 a^n = a × ______。
9.判断素数时,若 n 能被 2 到 Sqr(n) 中的某个整数整除,则 n 一定______素数。
10.过程定义形参时,使用 ByVal 关键字的参数在过程内部被修改______影响调用处的实参。
三、程序填空题(本题共2道小题,每题10分,共20分)
1.以下程序的功能是:用递归函数计算 a 的 n 次方(n 为非负整数)。请补充完善程序。
Private Function Power(ByVal a As Integer, ByVal n As Integer) As Long
If [1]______ Then
Power = 1
Else
Power = a * Power(a, [2]______)
End If
End Function
Private Sub Command1_Click()
Print “2的10次方为”; [3]______
End Sub
2.以下程序的功能是:用递归函数求一个正整数各位数字之和(如 256 → 2+5+6=13)。请补充完善程序。
Private Function DigitSum(ByVal n As Integer) As Integer
If n < 10 Then
DigitSum = [1]______
Else
DigitSum = n Mod 10 + DigitSum([2]______)
End If
End Function
Private Sub Command1_Click()
Dim r As Integer
r = [3]______
Print “各位数字之和为”; r
End Sub
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
编写说明:内蒙古自治区对口招生《计算机类考纲百套卷》,依据《2019年内蒙古自治区高等职业院校对口招收中等职业学校毕业生计算机类专业课综合考试指导纲要》编写。本专辑涵盖四门课程,且每门课程均采用三阶递进式训练体系:基础层(具象化支架)拆解考点为微目标,紧扣考纲“掌握”“理解”要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。
本试卷是第18卷,为考点训练卷,按《Visual Basic程序设计》范围和要求编写。具体内容为:事件过程,子过程,过程间参数的传递,过程的嵌套与递归,常用算法实例。
内蒙古对口招生《计算机类考纲百套卷》 第18卷
《Visual Basic程序设计》
过程 考点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、单选题(本题共30道小题,每题2分,共60分)
1.TextBox 控件的 KeyPress 事件在______时触发。
A. 文本框获得焦点时 B. 鼠标移过文本框时
C. 文本框内容改变时 D. 用户按下并释放一个 ANSI 键时
【答案】D
【解析】KeyPress 事件在用户按下并释放一个产生 ASCII 码的键时触发。
2.下列事件中,不属于窗体事件的是
A. Load B. Click
C. Unload D. Timer
【答案】D
【解析】Timer 是 Timer 控件的事件,不属于窗体事件。Load、Click、Unload 等是窗体的常用事件。
3.在 MouseMove 事件中,可以获得______信息。
A. 鼠标按键状态 B. 键盘按键状态
C. 仅鼠标坐标 D. 鼠标当前坐标和按键状态
【答案】D
【解析】MouseMove 事件参数包含 Button(按键)、Shift(组合键)、X、Y(当前坐标)。
4.Load 事件和 Activate 事件的触发顺序是
A. 先 Load 后 Activate B. 先 Activate 后 Load
C. 同时触发 D. 随机触发
【答案】A
【解析】窗体加载时先触发 Load(加载到内存),再触发 Activate(成为活动窗体)。
5.以下程序段运行后,Print 输出的值是
Private Sub Command1_Click()
Print Test(3)
End Sub
Private Function Test(ByVal x As Integer) As Integer
x = x + 2
Test = x * x
End Function
A. 9 B. 16
C. 25 D. 49
【答案】C
【解析】Test(3) 中 x=3+2=5, Test=5*5=25。ByVal 不影响实参 3。
6.以下关于 VB 中过程的说法,错误的是
A. Sub 过程可以有参数 B. Function 过程可有多个参数
C. Sub 过程可以没有参数 D. Function 过程必须至少有一个参数
【答案】D
【解析】Function 过程也可以没有参数,如 Function GetName() As String。
7.以下程序段运行后,a(1) 和 a(2) 的值分别是
Private Sub Modify(ByRef x As Integer, ByVal y As Integer)
x = x + y
y = x - y
End Sub
Private Sub Command1_Click()
Dim a(1 To 2) As Integer
a(1) = 5: a(2) = 3
Call Modify(a(1), a(2))
Print a(1), a(2)
End Sub
A. 5 3 B. 8 5
C. 8 3 D. 5 5
【答案】C
【解析】a(1) 是 ByRef 变为 5+3=8;a(2) 是 ByVal 不变,仍为 3。
8.调用过程时,参数的传递顺序是
A. 随机顺序 B. 按实参值的大小顺序
C. 按形参名的字母顺序 D. 按形参定义的先后顺序对应
【答案】D
【解析】实参与形参一一对应,按位置顺序传递,第一个实参对应第一个形参,以此类推。
9.以下程序段运行后,Print n 的值是
Private Sub A()
n = n + 1
End Sub
Private Sub B()
Call A
n = n * 2
Call A
End Sub
Private Sub Command1_Click()
n = 2
Call B
Print n
End Sub
(设 n 为模块级变量)
A. 5 B. 6
C. 7 D. 10
【答案】C
【解析】n=2 → Call B: Call A(n=3) → n=3*2=6 → Call A(n=7)。Print n=7。
10.在 LostFocus 事件中,______。
A. 控件获得焦点时触发 B. 控件被单击时触发
C. 控件内容改变时触发 D. 控件失去焦点时触发
【答案】D
【解析】LostFocus 事件在控件失去输入焦点时触发,常用于输入验证。
11.以下程序段运行后,变量 r 的值是
Private Function F(ByVal n As Integer) As Integer
If n = 0 Then
F = 0
Else
F = n Mod 10 + F(n \ 10)
End If
End Function
Private Sub Command1_Click()
Dim r As Integer
r = F(258)
Print r
End Sub
A. 8 B. 13
C. 15 D. 17
【答案】C
【解析】F(258)=8+F(25)=8+5+F(2)=8+5+2+F(0)=8+5+2+0=15,即各位数字之和。
12.设有以下 Function 过程,Print F(3) 的值是
Private Function F(ByVal n As Integer) As Integer
Static s As Integer
s = s + n
F = s
End Function
Private Sub Command1_Click()
Print F(1)
Print F(2)
Print F(3)
End Sub
A. 1 2 3 B. 1 3 5
C. 1 1 1 D. 1 3 6
【答案】D
【解析】Static s 保留值:F(1): s=0+1=1; F(2): s=1+2=3; F(3): s=3+3=6。输出 1, 3, 6。
13.以下程序段运行后,Print 分别输出的值是
Private Sub PlusOne(ByVal a As Integer, ByRef b As Integer)
a = a + 1
b = b + 1
End Sub
Private Sub Command1_Click()
Dim x As Integer, y As Integer
x = 4: y = 4
Call PlusOne(x, y)
Print x
Call PlusOne(y, x)
Print y
End Sub
A. 4 5 B. 5 4
C. 4 4 D. 5 5
【答案】A
【解析】第一次:x ByVal 不变=4, y ByRef 变=5;第二次:y ByVal 不变=5, x ByRef 变=5。Print 顺序:先 x 后 y。输出 4, 5。
14.以下递归函数运行后,F(5) 的值是
Private Function F(ByVal n As Integer) As Integer
If n <= 1 Then
F = 1
Else
F = F(n - 1) + F(n - 2)
End If
End Function
A. 5 B. 6
C. 8 D. 13
【答案】C
【解析】F(1)=1, F(2)=2, F(3)=3, F(4)=5, F(5)=8。注意本题 F(2)=F(1)+F(0)=1+1=2。
15.递归过程的“递推阶段”结束后进入“回归阶段”,回归过程中依次
A. 继续向更小问题递推
B. 从最后一次递归开始
C. 重新从基例开始计算
D. 释放所有变量并退出
【答案】B
【解析】递归分为递推(将问题层层分解)和回归(从基例开始逐层返回结果),回归阶段按调用逆序返回。
16.用非递归方法求斐波那契数列第 n 项,核心思路是
A. 用循环逐项累加,保存前两项的值
B. 用循环从 n 到 1 累乘
C. 用冒泡排序找出第 n 项
D. 用二分查找定位第 n 项
【答案】A
【解析】非递归斐波那契:使用两个变量 a 和 b 保存前两项,循环更新 a=b, b=a+b。
17.以下程序段运行后,变量 g 的值是
Private Sub Command1_Click()
Dim a As Integer, b As Integer, g As Integer
a = 72: b = 27
Do While b <> 0
Dim t As Integer
t = a Mod b
a = b: b = t
Loop
g = a
End Sub
A. 3 B. 9
C. 12 D. 18
【答案】B
【解析】72 Mod 27 = 18 → 27 Mod 18 = 9 → 18 Mod 9 = 0,最大公约数为 9。
18.用递归方法计算 a 的 n 次方(n>=0),基例为
A. n = 0 时返回 0 B. n = 0 时返回 1
C. n = 1 时返回 0 D. n = 1 时返回 a
【答案】B
【解析】a^0 = 1 是幂运算的基例。递推公式:a^n = a * a^(n-1)。
19.以下程序段运行后,变量 n 的值是
Private Sub P1(ByRef a As Integer)
a = a + 1
Call P2(a)
End Sub
Private Sub P2(ByVal b As Integer)
b = b * 2
End Sub
Private Sub Command1_Click()
Dim n As Integer
n = 3
Call P1(n)
Print n
End Sub
A. 3 B. 4
C. 7 D. 8
【答案】B
【解析】n=3 → P1: n=4 → P2: b 是 ByVal, n 不变=4。Print 4。
20.以下程序段的功能是判断 n 是否为素数,程序段中空处应填
Dim i As Integer, flag As Boolean
flag = True
For i = 2 To Int(Sqr(n))
If ______ Then
flag = False
Exit For
End If
Next i
A. n Mod i = 0 B. n Mod i <> 0
C. n \ i = 0 D. n / i = 1
【答案】A
【解析】若 n 能被 i 整除(n Mod i = 0),说明 n 有因子,不是素数,设置 flag=False。
21.以下程序段运行后,变量 c 的值是
Private Sub Command1_Click()
Dim n As Integer, c As Integer
n = 100: c = 0
Do While n > 0
c = c + (n Mod 10)
n = n \ 10
Loop
Print c
End Sub
A. 1 B. 3
C. 10 D. 100
【答案】A
【解析】各位数字之和:n=100, c=0+0=0, n=10, c=0+0=0, n=1, c=0+1=1, n=0。输出 1。
22.以下程序段运行后,Print 输出的值是
Private Function G(ByVal n As Integer) As Integer
If n <= 1 Then
G = 1
Else
G = n * G(n - 2)
End If
End Function
Private Sub Command1_Click()
Print G(6)
End Sub
A. 6 B. 24
C. 48 D. 720
【答案】C
【解析】G(6)=6*G(4)=6*4*G(2)=6*4*2*G(0)=6*4*2*1=48(每次减2的阶乘)。
23.VB 中的 ParamArray 关键字用于
A. 定义固定数量的参数
B. 定义参数数组
C. 定义可选参数
D. 定义静态数组参数
【答案】B
【解析】ParamArray 用于定义参数数组,允许过程接收不确定数量的参数,必须是 Variant 类型且放在最后。
24.在 Unload 事件中,将 Cancel 参数设为 True 的作用是
A. 强制关闭窗体 B. 取消窗体的关闭操作
C. 刷新窗体 D. 隐藏窗体
【答案】B
【解析】Unload 事件的 Cancel 参数设为 True 可阻止窗体关闭,常用于“是否保存”提示。
25.以下程序段运行后,变量 s 的值是
Private Sub Command1_Click()
Dim n As Integer, s As Integer
n = 12321
s = 0
Do While n > 0
s = s * 10 + n Mod 10
n = n \ 10
Loop
Print s
End Sub
A. 12321 B. 12345
C. 54321 D. 0
【答案】A
【解析】s 逐位重构 n 的数字逆序:s=0*10+1=1 → s=1*10+2=12 → ... → s=12321。12321 是回文数。
26.以下程序段运行后,Print x, y 输出的值是
Private Sub Command1_Click()
Dim x As Integer, y As Integer
x = 1: y = 1
Call Test((x), (y))
Print x, y
End Sub
Private Sub Test(ByRef a As Integer, ByRef b As Integer)
a = a + 1: b = b + 1
End Sub
A. 2 2 B. 1 1
C. 2 1 D. 1 2
【答案】B
【解析】调用时加括号 (x), (y) 会将 ByRef 强制转为传值(创建临时副本),因此 x 和 y 不变。
27.以下程序段运行后,F(4) 的值是
Private Function F(ByVal n As Integer) As Integer
If n = 1 Then
F = 1
ElseIf n Mod 2 = 0 Then
F = n + F(n / 2)
Else
F = F(n - 1)
End If
End Function
A. 4 B. 7
C. 11 D. 10
【答案】B
【解析】F(4)=4+F(2)=4+2+F(1)=4+2+1=7。
28.求 1 到 100 之间所有素数的和,最合适的核心算法是
A. 对每个数用循环判断是否为素数,是则累加
B. 用冒泡排序后累加
C. 用选择排序后累加
D. 用二分查找定位后累加
【答案】A
【解析】求素数之和需要逐一判断每个数是否为素数,是则累加,用循环+素数判断即可。
29.以下程序段运行后,Print 输出的值是
Private Function F(ByVal n As Integer) As Integer
Dim i As Integer
F = 1
For i = 1 To n
F = F * i
Next i
End Function
Private Sub Command1_Click()
Print F(6) / F(4)
End Sub
A. 6 B. 24
C. 30 D. 720
【答案】C
【解析】F(6)=720, F(4)=24, 720/24=30。
30.以下程序段运行后,Print a, b 的值是
Private Sub P(ByRef x As Integer, ByRef y As Integer)
x = x + 2
y = y + x
End Sub
Private Sub Command1_Click()
Dim a As Integer, b As Integer
a = 3: b = 3
Call P(a, b)
Print a, b
End Sub
A. 5 8 B. 3 8
C. 5 3 D. 5 10
【答案】A
【解析】x+2→x=5 (a变为5);y=3+5=8 (b变为8)。ByRef 直接修改原变量 a 和 b。
二、填空题(本题共10道小题,每题2分,共20分)
1.窗体关闭前触发的事件是______事件,可通过其 Cancel 参数控制是否允许关闭。
【答案】Unload(QueryUnload)
【解析】Unload 事件的 Cancel 参数设为 True 可取消窗体关闭,常用于退出确认。
2.当一个控件失去输入焦点时触发______事件。
【答案】LostFocus
【解析】LostFocus 事件在控件失去焦点时触发,常用于离开控件时的数据验证。
3.在 Visual Basic 6.0 中,用于接收不确定数量参数的机制是______关键字。
【答案】ParamArray
【解析】ParamArray 定义参数数组,接收可变数量的参数,必须是 Variant 类型且放在参数列表最后。
4.调用过程时若在实参外加括号,如 Call Test((x)),则会强制将______方式改为传值。
【答案】ByRef(按地址)
【解析】外加括号会创建一个临时表达式副本,即使过程定义为 ByRef 也会变为传值。
5.递归过程中,递归调用的______阶段从基例开始,逐层返回计算结果。
【答案】回归
【解析】递归的两个阶段:递推阶段(问题分解)和回归阶段(从基例逐层返回结果)。
6.递归过程每次调用自身时,系统会在______中为本次调用分配存储空间。
【答案】栈(Stack)
【解析】递归调用使用系统栈保存每层调用的局部变量、参数和返回地址,递归返回时自动恢复。
7.用递推方法求斐波那契数列第 n 项,核心是通过______逐项向前计算。
【答案】循环迭代
【解析】非递归斐波那契用循环每次更新两个变量 a、b,a=b, b=a+b(旧值),逐项推进。
8.计算 a 的 n 次幂(n>=0),递推关系为 a^n = a × ______。
【答案】a^(n-1)
【解析】a^n = a * a^(n-1),基例为 a^0 = 1,可用递归或循环实现。
9.判断素数时,若 n 能被 2 到 Sqr(n) 中的某个整数整除,则 n 一定______素数。
【答案】不是(一定不是)
【解析】只要在 2~Sqr(n) 内找到一个因子即可判定 n 不是素数;若都找不到,则 n 是素数。
10.过程定义形参时,使用 ByVal 关键字的参数在过程内部被修改______影响调用处的实参。
【答案】不会
【解析】ByVal 传值创建副本,过程内修改的是副本,原变量不受影响。
三、程序填空题(本题共2道小题,每题10分,共20分)
1.以下程序的功能是:用递归函数计算 a 的 n 次方(n 为非负整数)。请补充完善程序。
Private Function Power(ByVal a As Integer, ByVal n As Integer) As Long
If [1]______ Then
Power = 1
Else
Power = a * Power(a, [2]______)
End If
End Function
Private Sub Command1_Click()
Print “2的10次方为”; [3]______
End Sub
【答案】n = 0;n - 1;Power(2, 10)
【解析】基例:n=0 时返回 1(任何数的 0 次方为 1);递推:a^n = a * a^(n-1);调用 Power 计算 2 的 10 次方。
2.以下程序的功能是:用递归函数求一个正整数各位数字之和(如 256 → 2+5+6=13)。请补充完善程序。
Private Function DigitSum(ByVal n As Integer) As Integer
If n < 10 Then
DigitSum = [1]______
Else
DigitSum = n Mod 10 + DigitSum([2]______)
End If
End Function
Private Sub Command1_Click()
Dim r As Integer
r = [3]______
Print “各位数字之和为”; r
End Sub
【答案】n;n \ 10;DigitSum(256)
【解析】基例:n<10 时返回 n 本身(一位数);递推:各位和 = 个位(n Mod 10)+ 其余位数字之和(DigitSum(n\10));调用传入实际参数 256。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$