填空题 执行下面的程序,单击Command1按钮,则在窗体上显示的第一行内容是 1,第二行内容是 2,最后一行内容是 3
Option Explicit
Private Sub Command1_Click()
Dim a As Integer, b As String
a=27
Do
b=fun(a)
a=a/5
Loop Until a=0
Print b
End Sub
Private Function fun(n As Integer)As String
Static s As String
s=CStr(n Mod 5)&s
fun=s
Print s
End Function
【正确答案】
【答案解析】2 02 102 [解析] 本题主要是考核静态变量在过程调用时值的变化问题。静态变量只在其所在的过程第一次被调用时初始化,当其所在的过程运行结束后,静态变量的值仍然保留在内存中,系统不回收其内存存储单元。当其所在的过程再次被调用时,静态变量不再初始化,且原先保留在内存中的值可以继续使用。
本题程序执行过程分析如下图所示。
执行
顺序
说明 Command1_Click()
中的变量
fun()中的变量
a b n s fun
0 调用前 27 ""
1 进入Do循环,第一次调用 27 "" ""
2 s=CStr(n Mod 5)&s "2"
3 fun=s "2"
4 Print s 第一行输出:2
5 返回到b=fun(a) "2"
6 a=a/5 5
7 继续循环,第二次调用 5 "2" ""
8 s=CStr(n Mod 5)&s "02"
9 fun=s "02"
10 Print s 第二行输出:02
1l 返回的b=fun(a) "02"
12 a=a/5 1
13 继续循环,第三次调用 1 "02" ""
14 s=CStr(n Mod 5)&s "102"
15 fun=s "102"
16 Print s 第三行输出:102
17 返回到b=fun(a) "102"
18 a=a/5 0
19 循环结束,Print b 第四行输出:102