niusouti.com

以下程序运行后,单击按钮输出结果是 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

题目

以下程序运行后,单击按钮输出结果是 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。
更多“以下程序运行后,单击按钮输出结果是 Private Sub Commandl_Click( ) Dim x As Integer,y As ”相关问题
  • 第1题:

    下列程序运行后,单击命令按钮,窗体显示的结果为( )。 Private Function pl(x As Integer,y As Integer,z As Integer) pl=2*x+y+3*z End Function Private Function p2(X As Integer,y As Integer,z As Integer) p2=p1(z,y,x)+x End Function Private Sub Commandl_Click()

    A.23

    B.19

    C.21

    D.22


    正确答案:A

  • 第2题:

    在窗体上画一个命令按钮,其名称为Commandl,然后编写如下程序:

    Function a(x As Integer, y As Integer) As Integer

    a = IIf(x > y, x, y)

    End Function

    Private Sub Command1_Click()

    Dim n As Integer, m As Integer

    n = 10

    m = 20

    Print a(n, m)

    End Sub

    程序运行后,单击命令按钮,输出结果是______。


    正确答案:20
    20

  • 第3题:

    有如下程序: Private Sub Commandl_Click( ) Dim i As Integer For i=1 To 2 DS Next i End Sub Sub DS( ) Dim x As Integer,m As String Static y,n X=X + 1 y=y + 1 m=m &"*”:n=n&"#" Print x,y,m,n End Sub 程序运行后,输出的结果是

    A.1 1 * #

    B.1 1 * #

    C.1 1 * # 1 1 * # 1 2 * #

    D.1 1 * # 1 1 * ## 1 2 * ##


    正确答案:D
    解析:当i=1时,调用函数过程DS,由于y,n为静态变量值保存,执行x=x+1;y=y+1后x=1,y=1执行m=m&"*":n=n&"#"后,m="*",n="#";当I=2时同上,只是y=2,n="##"。输出结果如选项D)所示。

  • 第4题:

    单击命令按钮,下列程序的执行结果为 Private Sub Commandl_Click() Dim x As Integer,y As Integer x=32:y=42 Call PCS(x,y) Print x;y End Sub Public Sub PCS(Byval n As Integer,ByVal m As Integer) n=n Mod 10+1 m=m Mood 10+1 End Sub

    A.32 42

    B.2 32

    C.2 3

    D.12 3


    正确答案:A
    解析:在调用过程时,一般主调与被调过程之间有数据传递,即将主调过程的实参传递给被调用的过程,完成实参与形参的结合,然后执行被调过程,在VisualBasic中,实参与形参的结合有两种方式:即传址与传值。这两种方法的特点如下:传址的结合过程是,当调用一个过程是,它将实参的地址传给形参,因此在被调用的过程中,对形的任何操作都变成了对相应实参的操作,因此实参的值会随形参的改变而改变。传值的结合过程是,当调用一个过程时,系统将实参的值复制给形参并断开了联系,被调用过程中的操作时在形参自己的存储单元中进行的,当过程调用结束时,这些形参所占用的存储单元也同时被释放,因此在过程中对形参的任何操作不会影响实参。而题中被调过程PCS中有两个形参,两者均为传值方式。主调过程分别把实参x和y传递给PCS,所以当过程调用结束后,实参x和y的值都没有改变,最后输出的值应为3242。

  • 第5题:

    有如下程序: Private Sub Commandl_Click() Dim a As Single Dim b As Single a=2:b=4 Call CS(a,b)End Sub Sub CS(x As Single,y As Single) t=X x=t\y y=t Mod y End Sub 程序运行后,单击命令按钮,a和b的值分别为

    A.0 0

    B.1 1

    C.0 2

    D.1 2


    正确答案:C
    解析:调用一个过程时,必须把实际参数传送给过程,完成形式参数与实际参数的结合,然后用实际参数执行调用的过程;因为在默认的情况下,变量都是通过“引用”传送给Sub过程,在这种情况下,可以通过改变过程中相应的参数来改变变量的值;过程Sub的形参获得a,b的地址,此时x=2,y=4,在过程Sub中,将x,即2的值赋给t,而将ty的值赋给x,将t除以y的余数赋给y,此时x,y的值为0,2。

  • 第6题:

    单击命令按钮时,下列程序的执行结果是

    Private Sub Commandl_Click()

    Dim a As Integer,b As Integer,c As Integer

    a=3:b=4:c=5

    Print SecProc(c,b,A)End Sub

    Function FirProc(x As Integer,y As Integer,z As Integer)

    FirProc=2*x+y+3*z

    End Function

    Function SecProc(x As Integer,y As Integer,z As Integer)

    SecProc=FirProc(z,x,y) +x

    End Function

    A.20

    B.22

    C.28

    D.30


    正确答案:C
    解析:此题程序代码中用了双层调用,我们对这样的问题要多加小心,千万不要把实参和相对应的形参弄混。主调过程Command1_Click输出的是SecProc(c,b,A)的返回值,调用过程SecProc时,主调过程分别把实参c、b、a地址传给形参x、y、z,此时在过程SecProc中,SecProc=FirProc(a,c,B)+c。由此看出,程序段执行此语句时,将调用过程FirProc。把实参a、c、b的地址分别传给形参x、y、z,此时在过程FirProc中,FirProc=2*x+y+3*z,所以FirProc(a,c,B)=6+4+ 15=25,SecProc(a,c,B)=25+3=28,所以选项C)是正确的。

  • 第7题:

    在窗体上画一个名称为Commana1的命令按钮,然后编写如下程序: Dim SW As Boolean Function func(X As Integer)As Integer If X<20 Then Y=X Else Y=20+X End If func = Y End Function Private Sub Form. MouseDown(Button As Integer,_ Shift As Integer,X As Single, Y As Single) SW = False End Sub Private Sub Form_MouseUp( Button As Integer,_ Shift As Integer ,X As Single, Y As Single) SW = True End Sub Private Sub Commandl_Click( ) Dim intNum As Integer intNum = InputBox(" ") If SW Then Print func(intNum) End If End Sub 程序运行后,单击命令按钮,将显示一个输入对话框,如果在对话框中输入25,则程序的执行结果为

    A.输出0

    B.输出25

    C.输出45

    D.无任何输出


    正确答案:C
    解析:本题考查的是鼠标事件,当压下鼠标左键(发生MouseDown时)SW的值为False,当松开鼠标左键(触发MouseUp时)SW的值为True。

  • 第8题:

    单击命令按钮时,下列程序代码的执行结果为 Public Sub Procl(n As Integer,ByVal m As integer) n=n Mod 10 m=m\10 End sub Private Sub Commandl_Click() Dim x AS Integer,y AS Integer x=12:y=24 Call Procl(x,y) Print x;y End sub

    A.12 24

    B.2 24

    C.2 3

    D.12 2


    正确答案:B
    解析:本题主要考查对过程的理解程度。在调用过程时,一般主调与被调过程之间有数据传递,即将主调过程的实参传递给被调用的过程,完成实参与形参的结合后执行被调过程。在Visual Basic中,实参与形参的结合有两种方式:即传址与传值。这两种方法的特点如下: 传址的结合过程是,当调用一个过程时,它将实参的地址传给形参,在被调用的过程中,对形参的任何操作都变成了对相应实参的操作,因此实参的值会随形参的改变而改变。 传值的结合过程是,当调用一个过程时,系统将实参的值赋值给形参并断开了联系,被调用过程中的操作是在形参自己的存储单元中进行的,当过程调用结束时,这些形参所占用的存储单元也同时被释放,因此在过程中对形参的任何操作都不会影响实参。而题中被调过程Procl中有两个形参,其中第一个形参为传址方式,第二个形参为传值方式。主调过程分别把实参x,y传递给Procl,所以当过程调用结束后,实参x的值应随着被调过程变化而变化,而实参y值在主凋函数中始终不变,所以输出y的值仍为24;在被调过程中“n=n Mod 10”被调用时,相当于“x=x Mod 10”,所以x的最终值应为2。选项B是正确的。

  • 第9题:

    阅读下面的程序; Function Func(x As Integer,y As Integer)As Integer Dim n As Integer Do While n < = 4 x=x + y n = n + 1 Loop Func=x End Function Private Sub Command1_Click() Dim x As Integet, y As Integer Dim n As Integer,z As Integer x=1 y=1 For n = 1 To 6 z=Func(x,y) Next n Print z End Sub 程序运行后,单击命令按钮,输出的结果为.

    A.16

    B.21

    C.26

    D.31


    正确答案:D
    解析:过程Func有两个参数,使用的是引用方式,参数和返回值均为整型,在命令按钮事件过程的For循环中调用Func过程,共循环6次,每次循环调用一次。两个过程中使用的变量(包括参数)基本相同,但由于是局部变量,不会发生冲突。无论在事件过程还是通用过程中,y的值始终保持不变,总等于1。在Func过程中,DoLoop循环共执行5次,通过变量n控制(从0~4),每次都执行x=x+1,因此,每调用一次Func过程,都使得x=x+5,并将返回值赋给事件过程中的变量z。6次调用中,循环变量n的计算过程为:1、2、3、4、5、6:返回值z的结果为:6、11、16、21、26、31。

  • 第10题:

    在窗体上画一个命令按钮,然后编写如下程序: Private Sub Commandl_Click( ) Dim a AS Integer,b As Integer a=15 b=2 t N(a,B)End Sub Function N(x As Integer,y As Integer) As Integer N=IIf(x)y,x,y) End Function 程序运行后,单击命令按钮,输出结果为

    A.1

    B.2

    C.15

    D.8


    正确答案:C
    解析:事件过程N的作用是输出两个数中最大的,它调用了IIF函数,条件部分是(x〉y),如果满足,那么N的值即为x的值,否则为y的值。在Sub过程中,定义了两个变量a,b,并赋给它们初值15,2,并调用Print函数,输出N(a,b)的值,因为x〉y,所以输出15。

  • 第11题:

    在窗体上画一个名称为Coramandl的命令按钮,然后编写如下程序; Dim SW As Boolean Function func(X As Integer)As Integer If X<20 Then Y=X Else Y=20+X End If func=Y End Function Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim a As Boolean SW=False End Sub Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) SW=True End Sub Private Sub Command1_Click() Dim intNum As Integer intNum=InputBox("") If SW Then Print flmc(intNum) End If End Sub 程序运行后,单击命令按钮,将显示一个输入对话框,如果在对话框中输入25,则程序的执行结果为

    A.输出0

    B.输出2

    C.输出45

    D.无任何输出


    正确答案:D
    解析:上述程序由一个通用过程和3个事件过程组成,在命令按钮事件过程中调用通用过程,并把一个参数传送给通用过程。这里要注意,只有在一定的条件下,才能调用通用过程,这个条件就是,窗体层的Boolean变量SW的值必须为True,否则不能调用。而为了使SW的值为True,必须执行Form_MouseUp事件过程,这只能通过单击窗体来实现。单击窗体时,单击鼠标左键执行Form_MouseDown事件过程,使得SW=False。松开鼠标后执行Form_MouseUp事件过程,使得SW=True。程序运行后,由于没有执行Form_MouseUp事件过程,直接单击命令按钮,因而SW的值为False,这样不会调用通用过程,也就不会输出任何信息。

  • 第12题:

    在窗体上画一个命令按钮,然后编写如下程序 Private Sub Command1_Click( ) Dim a As Integer,b As hiteger a=1 b=2 Print N(a,B)End Sub Function N(x As Integer,y As Integer)As Integer N=IIf(x>y,x,y) End Function 程序运行后,单击命令按钮,输出结果为

    A.1

    B.2

    C.5

    D.8


    正确答案:B
    解析:事件过程N的作用是输出两个数中最大的,它调用了IIF函数,条件部分是(x>y),如果满足,那么N的值即为x的值,否则为y的值。在Sub过程中,定义了两个变量a,b,并赋给它们初值1,2,并调用Print函数,输出N(a,b)的值,因为xy,所以输出y=2。

  • 第13题:

    在窗体上画一个命令按钮,然后编写如下程序 Private Sub Command4 Click() Dim a As Integer,b As Integer a=1 b=2 Print N(a,B)End Sub Function N(x As Integer,y As Integer)As Integer N=IIf(x>y,x,y) End Function 程序运行后,单击命令按钮,输出结果为

    A.l

    B.2

    C.5

    D.8


    正确答案:B
    解析:事件过程N的作用是输出两个数中最大的,它调用了IIF函数,条件部分是(x>y),如果满足,那么N的值即为x的值,否则为y的值。在Sub过程中,定义了两个变量a,b,并赋给它们初值1,2,并调用Print函数,输出N(a,B)的值,因为xy,所以输出y=2。

  • 第14题:

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

    A.6 6 12 `

    B.9 5 10 6101051010

    C.9 6 12

    D.9 10 10 910155410


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

  • 第15题:

    在窗体上有一个命令按钮Commandl,编写事件代码如下:

    Private SuB commandl_Click()

    Dim x As Integer,y As Integer

    x=12:y=32

    Call Proc(x,y)

    OeBug.Print x;y

    End SuB

    PuBlic SuB Proc(n As Integer,Byval m As Integer)

    n=n Mod 10

    m=m Mod 10

    End SuB

    打开窗体运行后,单击命令按钮,立即窗口上输出的结果是

    A.2 32

    B.12 3

    C.2 2

    D.12 32


    正确答案:A
    解析:参数有两种传递方式:传址传递ByRef和传值传递ByVal。如果没有说明传递类型,则默认为传址传递。在函数.Proc(n As Integer,ByVal m As Integer)参数中,形参n默认为传址传递,形参的变化将会返回到实参,即形参n mod 10(12 rood 10)得到的结果2将返回给实参x,即x=2;而y为传值类型,不为形参的变化而变化,所以输出的x和y应为2和32。

  • 第16题:

    在窗体上画一个命令按钮,然后编写如下程序:Sub S1(ByVal x As Integer, By Val y As Integer) Dim t As Integer t=x x=y y=tEnd SubPrivate Sub Command1_ Click() Dim a As Integer, b As Integer a=10 b=30 S1 a,b Print "a=";a="b=";bEnd Sub 程序运行后,单击命令按钮,输出结果是______。

    A.a=30 b=10

    B.a=30 b=30

    C.a=10 b=30

    D.a=10 b=10


    正确答案:C
    解析:过程S1似乎是要将两个变量的值进行交换,但由于参数是用传值的方式来传递变量值的,所以执行完该过程后,a和b的值并未被交换,保持原来的值不变。

  • 第17题:

    阅读下列程序: Dim SW As Boolean Function func(X As Integer)As Integer If X<20 Then Y=X Else Y=20+X End If func=Y End Function Private Sub Form_MouseDown(Button As Integer,Shift As Integer,X As Single, Y As Single) SW=False End Sub Private Sub Form_MouseUp(Button As Integer,Shift As Integer,X As Single, Y As Single) SW=True End Sub Private Sub Command1_Click() Dim intNum As Integer intNum=InputBox(" ") If SW Then Print func(intNum) End If End Sub 程序运行后,单击一次窗体,再单击命令按钮,将显示一个输入对话框,如果在对话框中输入20,则程序的输出结果为

    A.0

    B.20

    C.40

    D.无任何输出


    正确答案:C
    解析:上述程序由一个通用过程和3个事件过程组成,在命令按钮事件过程中调用通用过程,并将一个参数传送给通用过程。这里要注意,只有在一定的条件下,才能调用通用过程,这个条件就是,窗体的Boolean变量SW的值必须为True,否则不能调用。而为了使SW的值为True,必须执行Form.MouseUp事件过程,这只能通过单击窗体来实现。单击窗体时,按下鼠标左键执行FormMouseDown事件过程,使得SW=False,松开鼠标后执行Form.MouseUp事件过程,使得=True。程序运行后,由于单击了一次窗体,执行了Form_Mouseup事件过程,再单击命令按钮,因而SW的值为True,调用通用过程后,在窗体上显示的内容是40。若没有事先单击窗体,而直接单击按钮,窗体上就没有任何内容输出。

  • 第18题:

    在窗体上有一个命令按钮Commandl,编写事件代码如下:Private Sub Commandl Click( ) Dim X As Integer,Y As Integer x=12:y=32 Call Proc(x,Y) Debug.Print X;Y End Sub Public Sub proc(n As Integer,ByVal in As Integer) n=n Mod 10 m=m Mod 1O End Sub 打开窗体运行后,单击命令按钮,立即窗口上输出的结果是( )。

    A.232

    B.123

    C.22

    D.1232


    正确答案:A
    A。【解析】由程序可知proc过程作用是将参数的个位求出并赋给本身。它的第一个参数是默认按地址传递,所以它可以改变实参的值,而第二个是按值传递,形参的改变对实参无影响。于是当Callproc(x,y)后X由12变为2,而y仍为32。

  • 第19题:

    以下程序运行时,单击窗体后,在窗体上输出的结果是 ______。 Private SubForm_Click() Dim a As Integer,b As Integer a=10 :b=20 Call ff(a,B)Print a,b End Sub Private Sub ff(x As Integer,y As Integer) x=x+y y=x+y End Sub

    A.30 50

    B.30 30

    C.20 20

    D.10 20


    正确答案:A
    解析:本题中x、y的最后取值也就是a、b的输出值。执行x=x+y=10+20=30,接着执行y=x+y= 30+20=50。所以在窗体上输出的结果是30和50。

  • 第20题:

    单击命令按钮执行下列程序,其输出结果是( )。 Private Sub Command1_Click() Dim a As Integer, b As Integer, c As Integer a=3 b=4 c=5 Print SecProc(c,b,A)End Sub Function FirProc(x As Integer, y As Integer, z As Integer) FirProc=2*x+y+3*Z End Function Function SecProc(x As Integer,y As Integer, z As Integer) SecProc=FirProc(z,x,y)+x End Function

    A.20

    B.22

    C.28

    D.30


    正确答案:C
    解析:本题是在Command1过程中调用SecProc函数,而在SecProc函数中又调用了FirProc函数。函数调用时,实参和形参要一一对应传递.程序运行过程如下:①PrintSecProc(c,b,A)→PrintSecProc(5,4,3);②SecProc=FirProc(z,x,y)+x→SecProc=FirProc(3,5,4)+5;③FirProc=2*x+y+3*z→FirProc=2*3+5+3*4=23;④SecProc=28→PrintSecProc(c,b,A)→Print28。形参是在被调用的Sub,Function过程中定义的参数名;实参则是在调用的Sub或Function过程中定义的参数名。

  • 第21题:

    运行下列程序:Private Sub Form_Click( )Dim y As Integer, x As IntegerDo Until x > 20x

    运行下列程序:

    Private Sub Form_Click( )

    Dim y As Integer, x As Integer

    Do Until x > 20

    x = x + 10

    y = y + x

    If x > 20 Then Exit Do

    Loop

    Print x, y

    End Sub

    单击窗体后,则在窗体上显示的结果是( )。

    A.10 20

    B.30 60

    C.10 30

    D.20 60


    正确答案:B

  • 第22题:

    在窗体上画一个按钮,然后编写如下的事件代码。在按钮上单击,输出为,( )。 Private Sub fun(ByVal x As Integer,ByVal y As Integer,Byval z As Integer) z=x^3*y^3 End Sub Private Sub Command1_Click() Dim m As Integer Call fun(2,3,m) Print m End Sub

    A.216

    B.0

    C.35

    D.程序不能运行


    正确答案:B
    解析:当发生了Command1.的单击事件时,调用fun过程,把常量2、3和变量m按值传给形参x、y和z,在过程fun中把表达式“x^3*y^3”的值赋给z,z的值为316。过程调用返回后,由于m是值传递,所以对z的修改并没有改变它的值,m依旧保留原来的值是0。

  • 第23题:

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

    A.6 6 12 6 6 10

    B.9 5 10 5 10 10

    C.9 6 12 9 10 15

    D.9 5 10 5 4 10


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