有下面程序代码: Private Sub Command1_Click() Dim k As Integer For k = 1 To 3 Call fun(k) Next k For k = 1 To 3

admin2019-03-14  30

问题 有下面程序代码:
Private Sub Command1_Click()
    Dim k As Integer
    For k = 1 To 3
        Call fun(k)
    Next k
    For k = 1 To 3
        Call proc(k)
    Next k
End Sub
Private Sub fun(x As Integer)
    Static a As Integer
    a = a + 1
    Print a * x;
End Sub
Private Sub proc(x As Integer)
    Dim a As Integer
    a = a + 1
    Print a * x;
End Sub
运行Command1_Click过程产生的输出是

选项 A、1 2 3 1 2 3
B、1 4 9 1 2 3
C、1 4 9 1 4 9
D、1 2 3 1 4 9

答案B

解析 本题中fun()函数内声明Static局部变量,该变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不会被初始化,其值始终驻留在全局数据区,直到程序运行结束。在过程fun()中对a值的改变在下次调用时a值仍为上次调用结束时的值。Command1_Click()过程中的第一个For循环执行3次,即fun()过程被调用3次,静态局部变量a具有保留上次执行结果的特点,三次循环a的值分别为1,2,3。所以3次输出的值为1,4,9。而Command1_Click()过程中的第二个For循环也执行3次,即proc()过程也被调用3次,每次局部变量a的初始值均为0,执行a=a+1后,a=1。所以3次输出的值为1,2,3。故正确答案为选项B。
转载请注明原文地址:https://jikaoti.com/ti/Xsm0FFFM
0

最新回复(0)