itgle.com

以下程序:PublicSubSwap1(xAsInteger,ByValyAsInteger)DimtAsIntegert=x:x=y:y=tEndSubPublicSubSwap2(xAsInteger,yAsInteger)DimtAsIntegert=x:x=y:y=tEndSubPrivateSubCommand1_Click()DimaAsInteger,bAsIntegera=10:b=20Swap1a,bPrint"A1=";a,"B1=";ba=10:b=20Swap2a,bPrint"A

题目

以下程序:

PublicSubSwap1(xAsInteger,ByValyAsInteger)

DimtAsInteger

t=x:x=y:y=t

EndSub

PublicSubSwap2(xAsInteger,yAsInteger)

DimtAsInteger

t=x:x=y:y=t

EndSub

PrivateSubCommand1_Click()

DimaAsInteger,bAsInteger

a=10:b=20

Swap1a,b

Print"A1=";a,"B1=";b

a=10:b=20

Swap2a,b

Print"A2=";a,"B2=";b

EndSub

当单击命令按钮后,窗体上输出的结果是( )

A.A1=20B1=10A2=10B2=20

B.A1=10B1=20A2=20B2=10

C.A1=10B1=20A2=10B2=10

D.A1=20B1=20A2=20B2=10


相似考题
更多“以下程序:PublicSubSwap1(xAsInteger,ByValyAsInteger)DimtAsIntegert=x:x=y:y=tEndSubPub ”相关问题
  • 第1题:

    要想在过程Proc调用后返回形参x和y的变化结果,下列定义语句中正确的是______。

    A.Sub Proc(x as Integer, y as Integer)

    B.Sub Proc(By Val x as Integer, y as Integer)

    C.Sub Proc(x as Integer, By Val y as Integer)

    D.Sub Proc(By Val x as Integer, By Val y as Integer)


    正确答案:A
    解析:过程定义时,如果形式参数被声明为传值(ByVal项),则过程调用只是相应位置实参的值“单向”传送给形参处理,而被调用过程内部对形参的任何操作引起的形参值的变化均不会反馈、影响实参的值。由于这个过程中数据的传递只是单向性,故称为“传值调用”的“单向”作用形式。反之,如果形式参数被声明为传址(ByRef项),则过程调用是将相应位置实参的地址传送给形参处理,而被调用过程内部对形参的任何操作引起的形参值的变化又会反向影响实参的值。在这个过程中,数据的传递具有双向性,故称为“传址调用”的“双向”作用形式。在过程定义时,如果未做参数说明,则默认为传址调用。本题要在过程Proc调用后返回形参x和y的变化结果,所以本题的参数x和y的说明方式都需要采用传址(ByRef项),所有B、C、D选项不符合要求,由于未做参数说明,则默认为传址调用,则A选项正确。

  • 第2题:

    要想在过程Proc调用后返回形参x和Y的变化结果,下列定义语句中正确的是( )。【考点5过程调用与参数传递】

    A.Sub Proc(x as Integer,Y as Integer)

    B.Sub Proc(ByVal x as Integer,Y as Integer)

    C.Sub Proc(x as Integer,ByVal Y as Integer)

    D.Sub Proc(ByVal x as Integer,ByVal Y as Integer)


    正确答案:A
    本题考查VBA中参数传递的知识。在VBA的过程调用时,参数有两种传递方式:传址传递和传值传递。如果在过程声明时形参用ByVal声明,说明此参数为传值调用;若用ByRef声明,说明此参数为传址调用:若没有说明传递类型,则默认为传址传递,即形参的结果会传递给实参。

  • 第3题:

    单击按钮时,以下程序运行后的输出结果是 Private Sub Commandl_Click( ) Dim X As Integer,y As Integer,z As Integer x=1:y=2: Z=3 Call God(x,x,z) Print x;x;z Call God(x,y,y) Print X;y;y End Sub Private Sub God(x As Integer,y As Integer,z As Integer) x=3 * Z + 1 y=2 * Z z=x + y End Sub

    A.6 6 12 7 11 11

    B.8 5 10 5 11 11

    C.9 6 12 9 10 15

    D.8 10 10 5 9 10


    正确答案:A
    解析:从整体上看,可得主调过程将两次调用过程God后,实参的值将随形参变化而变化,现在分析一下这两次调用实参和形参是怎么变化的:第一次调用被调过程God,主调过程把实参x,x和z的地址分别传给形参x,y和z,此时形参x,y和z值分别为1,1和3,执行语句x=3*z+1后,形参x值变为10,此时相对应的实参x也变为10,执行语句y=2*z后,形参y值变为6,则相对应的实参x值变为6。执行z=x+y后,形参z值应为12,当然这次调用后,程序代码输出的数值为6,6,12;第二次调用被调过程God,主调过程把实参x,x和y的地址分别传给形参x,y和z。应注意,此时实参x的值为6而不是1,所以此时形参x,y和z值分别为6,2和2,执行语句x=3*z+1后,形参x值为7,相对实参x值也相应的变为7。执行语句y=2*z后,形参y值变为4,相应的实参y值也变为4,执行z=x+y后,形参z值变为11,相应的实参y的值变为11,而形参y和z的地址相同,所以最后它们值都应为11,所以此次调用后,输出的数值为7,11和11。

  • 第4题:

    单击一次窗体之后,下列程序代码的执行结果为______。 Private Sub Command1_ Click() Dim x As Integer, y As Integer, z As Integer x = 1: y = 2: z = 3 Call fun1 (x, y, z) Print x; y; z Call fun2(x, y, z) Print x; y; z End Sub Private Sub fun1(x As Integer, y As Integer, z As Integer) x = 10 * z y=z*z+ x z=x+ y+ z End Sub Private Sub fun2 (ByVal x As Integer, ByVal y As Integer, ByVal z As Integer) x=10*z y=z*z+ x z=x+ y +z End Sub

    A.1 2 3 30 39 72

    B.1 2 3 1 2 3

    C.30 39 72 1 2 3

    D.30 39 72 30 39 72


    正确答案:D

  • 第5题:

    以下程序运行后,单击按钮输出结果是 Private Sub Commandl_Click( ) Dim x As Integer,y As Integer,z As Integer X=4:y=2: Z=3 Call Gopd(x,x,z) Print x;X;Z Call Gopd(x,y,y) Print x;y;y End Sub Private Sub Gopd(x As Integer,y As Integer,z As Integer) X=3 * Z + 1 y=2 * z z=x + y End Sub

    A.6 6 12 7 11 11

    B.8 5 10 5 11 11

    C.9 6 12 9 10 15

    D.8 10 10 5 9 10


    正确答案:A
    解析:第一次调用被调过程Gopd,主调过程把实参x,x,z的地址分别传给形参x,y,z,此时形参x,y,z值分别为4,4和3,执行语句x=3*z+1后,形参x值变为10,此时相对应的实参x也变为10执行语句y=2*z后,形参y值变为6,则相对应的实参x值变为6;执行z=x+y后,形参z值应为12,当然这次调用后,程序代码输出的数值为6,6,12;第二次调用被调过程Gopd,主调过程把实参x,x,z的地址分别传给形参x,y,z,此时实参x的值为6而不是1,所以此时形参x,y,z值分别为6,2和2,执行语句x=3*z+1后,形参x值为7,相对实参x值也相应的变为7;执行语句y=2*z后,形参y值变为4,相应的实参y值也变为4;执行x=x+y后,形参z值变为11,相应的实参y的值变为11,而形参y和z的地址相同,最后它们值都应为11,所以此次调用后,程序输出的数值为7,11和11。