有如下通用过程: Private Sub St(ByVal strX As String, strY As String) Dim Ts As String i = Len(strX) Do While i >= 1

admin2020-07-22  30

问题 有如下通用过程:
Private Sub St(ByVal strX As String, strY As String)
    Dim Ts As String
    i = Len(strX)
    Do While i >= 1
        Ts = Ts + Mid(strX, i, 1)
        i = i - 1
    Loop
    strY = Ts
End Sub
在窗体上画一个命令按钮,其名称为Command1,然后编写如下事件过程:
Private Sub Command1_Click()
    Dim s1 As String, s2 As String
    s1 = "abcd"
    Call St(s1, s2)
    Print s2
End Sub
程序运行后,单击命令按钮,输出结果是

选项 A、abcd
B、dabc
C、dcba
D、abdc

答案C

解析 求字符串长函数Len(s),英文全称:Length,返回字符串s的长度,即所包含的字符的个数。Do While…Loop,当程序开始执行时,先计算循环"条件"值,当条件为假时结束循环,否则执行循环体。字符串截取函数Mid$(s,n1,n2),从s第n1个字符开始,向后截取n2个字符。St过程中strX前有ByVal,是按值传递,即s1将值传给形参strX;strY是按地址传递,s2把地址传给了形参strY,strX的变化不引起s1的变化,但strY的变化却能改变s2。程序开始执行时,先将字符变量s1的值按值传递的方式传给了过程St,i=Len(strX)=Len(s1)=4;执行do while循环,循环条件4>=1为真,执行循环体,Mid(strX,4,1)=d, Ts = Ts + d = d,i=3;循环条件3>=1为真,执行循环体,Mid(strX,3,1)=c,Ts = Ts+d = dc,i=2;如此循环,知最后strY=dcba,因strY与s2是按地址传递的方式,故strY值的变化也会引起s2值的变化,所以s2=strY=dcba;本题正确答案为C。
转载请注明原文地址:https://kaotiyun.com/show/yjHp777K
0

最新回复(0)