填空题 执行下面的程序,单击命令按钮Command1后,窗体显示的第一行内容是 1,第二行内容是 2,第三行内容是 3
Option Explicit
Dim K As Integer
Private Sub Command1_Click()
Dim A As Integer, B As Integer
A=11:B=2
K=Fun((A), B)+Fun(A, A)
Print K
End Sub
Private Function Fun(N As Integer, M As Integer)As Integer
N=N/2
K=K+N
If N Mod 2<>0 Then
N=N+1
End If
M=M+K
Fun=M+N
Print M, N
End Function
【正确答案】
【答案解析】7 6 16 16 45 [解析] 本题主要是考核过程调用时参数传递方面的知识点。这方面的题目主要是搞清楚参数传递的方式是按值传递还是按地址传递。按值传递比较简单,实参将值传给形参后,形参值的变化不会影响到实参的值;按地址传递时,要注意形参值发生变化后,实参的值也要立即变化。本题中有一个调用是将实参A按地址传递给形参N与M,此时,只要A、M、N中任何一个变量的值发生变化,其他两个变量的值同步变化。
本题各变量值的变化过程如下图所示。
执行
顺序
说明 模块级
变量
Command1_Click()
中的变量
Fun()中
的变量
K A B N M Fun()
0 过程调用前 0 11 2
1 第一次调用时,A传地址给N,B传地址给M 11 2 0
2 N=N/2 5
3 K=K+N 5
4 If语句块 6
5 M=M+K,M变化时B同步变化 7 7
6 Fun=M+N 13
7 Print M,N 第一行输出:7 6
8 第二次调用时,A传地址给N,B传地址给M 5 11 7 11 11 13
9 N=M/2,A、N、M同步变化 5 5 5
10 K=K+N 10
11 If语句块,A、N、M同步变化 6 6 6
12 M=M+K,A、N、M同步变化 16 16 16
13 Fun=M+N 32
14 Print M,N 第二行输出:16 16
15 调用结束,返回到K=Fun((A),B)
+Fun(A,A)
45
16 Print K 第三行输出:45
在参数传递时,实参若是以下情形之一,则以按值传递方式进行:
(1)常量。
(2)表达式。
(3)实参变量外加一层括号。