二级VB 问题!急 要过程 好+分

来源:百度知道 编辑:UC知道 时间:2024/06/12 10:29:26
5、执行下面程序,单击command1按钮后,显示在窗体上的第一行内容是 、第二行内容是 、第三行内容是 。
Option Explicit
Dim a As Integer
Private Sub Command1_Click()
Dim b As Integer
a = 1
b = 2
Print fun1(fun1(a, b), b)
Print a
Print b
End Sub
Function fun1(x As Integer, y As Integer) As Integer
Dim i As Integer
For i = 1 To y
y = y + 1
x = x + 1
a = x + y
Next i
fun1 = a + y
End Function
过程

第一次调用fun1(1,2)时,a=10(i=1时,x=x+1,a=x+y,a=5,i=2时,a变成了10)
b则是用了两次y = y + 1变成了4
fun1(1,2)=a+y=10+4=14
同理,调用fun1(14,2)后就变成了
34
26
8

34
26
8
当执行到“x = x + 1”的时候,因为参数x,y是地址传参,所以对应的a也变了;
而在内部for循环中,y是递增的,y变等于b变,所有执行完一次内循环,b就会加一次,那第2次进入内循环会多循环一次。
如此递推下去b将执行b=2+(1)+(1+1)+(1+1+1)=8
a的情况就是:a=1+(1+2)
a=1+((1+2)+(1+1))
a=1+(((1+2)+(1+1))+((1+2)+1))
.......5次
a=1+15+10=26
而fun1=a+y其实就是a+b=26+8=34
大概过程就是这样的。
关键是考察函数的地址传参数。

34
26
8

34
26
8

34
26
8