在窗体上画一个名称为Command1的命令按钮,一个名称为Text1的文本框,并编写以下程序代码: Private Sub subl(ByRef d(),ByRef m As Integer) Dim i As Integer m=

admin2018-07-11  27

问题 在窗体上画一个名称为Command1的命令按钮,一个名称为Text1的文本框,并编写以下程序代码:
    Private Sub subl(ByRef d(),ByRef m As Integer)
    Dim i As Integer
    m=d(LBound(d))
    For i=LBound(d)+1 To UBound(d)
    If m>d(i)Then m=d(i)
    Next i
    End Sub
    Prirate Sub Command1 Click()
    Dim n As Integer
    n=0
    Dim data()As Variant
    data=Array(23,50,一10,220,35,一8)
    Call subl(data(),n)
    Text1.Text=n
    End Sub
    以下叙述中错误的是(    )。

选项 A、程序运行时,单击Command1,则在Text1中显示的结果为0
B、在过程subl的形参列表中,如果m左边的关键字ByRef省略,则程序执行结果不变
C、程序运行时,单击Command1,则变量n的值为-10
D、语句Call subl(data(),n)改为subl data,n时,程序执行结果不变

答案A

解析 在过程Command1_Click中,定义了一个默认数组data,然后通过Array函数给数组元素赋值,接着使用Call语句调用过程subl并将数组data作为参数传递给subl过程,当用数组作为过程的参数时,使用的是“传地址”方式,而不是“传值”方式,故在过程subl中对数组元素的修改,会改变原数组的值。变量n使用的传递方式为By。Ref,n传递的也是地址。在subl过程中,语句LBound(d)获得的是数组下标的下界值,d(LBound(d))=d(O)=23,所以m=23;For循环的循环变量i初始值为1,终止值为5,程序执行如下:当i=1时,m>d(i)为假;当i=2时,m>d(i)为真,执行语句m=d(i)=一10;当i=3时,m>d(i)为假;当i=4时,m>d(i)为假;当i=5时,m>d(i)为假,循环结束,最终m的值为一10。由于过程传递的是地址,主调过程Command1_Click中的n值为一10,最终输出到Text1文本框控件中的值为一10。所以A选项叙述错误,其它3项叙述正确。本题选择A选项。
转载请注明原文地址:https://kaotiyun.com/show/IoFp777K
0

最新回复(0)