假定编写了如下的Sub过程: Public Sub Proc(a()As Integer) Static i As Integer Do a(i)=a(i)+a(i+1) i=i+1 Loop Whilei<2 End Sub 编写如下事件过程: Priv

admin2018-12-20  25

问题 假定编写了如下的Sub过程:
Public Sub Proc(a()As Integer)
Static i As Integer
Do
a(i)=a(i)+a(i+1)
i=i+1
Loop Whilei<2
End Sub
编写如下事件过程:
Private Sub Form_Click()
Dim m As Integer,i As Integer,x(4)As Integer
For i=0 To 4
X(i)=i+1
Next i
For i=1 To 2
Call Proc(x())
Next i
For i=0 To 4
Print x(i);
Next i
End Sub
运行程序,单击窗体,输出结果是(    )。

选项 A、3 4 7 5 6
B、3 5 7 4 5
C、2 3 4 4 5
D、4 5 6 7 8

答案B

解析 单击窗体时,触发Form_Click事件,在Form_Click事件过程中,定义了两个整型变量m和i,同时定义了一个可以存储5个整型元素的一维数组x,然后通过第一个For循环给数组元素赋值,其中x(0)=1,x(1)=2,x(2)=3,x(3)=4,x(4)=5;第二个For循环共执行两次,每执行一次,调用过程Proc一次,且数组作为实际参数,传递的形式为按地址传递,即被调用过程对数组元素的改变会影响主调过程中数组元素的值。在被调用过程Proc中,定义了一个静态局部变量i,静态局部变量有一个很重要的特性就是在程序运行过程中,会自动保留上次执行的结果,即第一次调用Proc过程结束后变量i的值会被“记忆”住,作为下次调用Proc的初始值。两次调用Proc过程,各变量的值如下表所示。

a(3)和a(4)的值不受影响,还是初始值,最后通过Form_Click事件过程中的第三个For循环将数组结果输出,所以B选项正确。
转载请注明原文地址:https://kaotiyun.com/show/RkFp777K
0

最新回复(0)