假定编写了如下的Sub过程: Public Sub Proc(a()As Integer) Static i As Integer Do a(i)=a(i)+a(i+1) i=i+1 Loop While i

admin2019-03-14  24

问题 假定编写了如下的Sub过程:
  Public Sub Proc(a()As Integer)
    Static i As Integer
    Do
    a(i)=a(i)+a(i+1)
    i=i+1
    Loop While i<2
    End Sub
    编写如下事件过程:
    Private Sub Form_Click()
    Dim in 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://jikaoti.com/ti/fYm0FFFM
0

最新回复(0)