单击窗体时,下列程序代码的运行结果为()。 Private Sub Test(x As Integer) x = x * 2 + 1 If x < 6 Then Call Test(x) End If x = x * 2 + 1 Print x; End Sub Private Sub Form_Click() Test 2 End SubA.5 11B.23 47C.10 22D.23 23

题目

单击窗体时,下列程序代码的运行结果为()。 Private Sub Test(x As Integer) x = x * 2 + 1 If x < 6 Then Call Test(x) End If x = x * 2 + 1 Print x; End Sub Private Sub Form_Click() Test 2 End Sub

A.5 11

B.23 47

C.10 22

D.23 23


相似考题
更多“单击窗体时,下列程序代码的运行结果为()。 Private Sub Test(x As Integer) x = x * 2 + 1 If x < 6 Then Call Test(x) End If x = x * 2 + 1 Print x; End Sub Private Sub Form_Click() Test 2 End Sub”相关问题
  • 第1题:

    单击命令按钮时,下列程序代码的执行结果为______。 Private Sub Proe1 (n As Integer,ByVa1 m As Integer) n=n Mod 10 m=m\ 10 End Sub Private Sub Command1_Click() Dim x As Integer Dim y As Integer x= 12 y = 34 Call Proe1 (x, y) Print x; y End Sub

    A. 12 34

    B.2 34

    C.2 3

    D.12 3


    正确答案:B

  • 第2题:

    在窗体中添加一个名称为Cmd的命令按钮,然后编写如下程序: Public x As integer Private Sub Cmd_Click() x=10 Call add1 Call add2 MsgBox x End Sub Private Sub add1 ( ) x=x+20 End Sub Private Sub add2 ( ) Dim x As integer x=x+40 End Snb 窗体打开运行后,单击命令按钮,则消息框的输出结果为( )。

    A.10

    B.60

    C.30

    D.70


    正确答案:C
    解析:公有变量x,在add1中对其值加20为30,但在add2中又定义了私有变量x,这时私有变量有效。所以x的值仍然为30。

  • 第3题:

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

  • 第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 Test (x As Integer) x=x*2+1 If x < 6 Then Call Test(x) End If x-x*2+1 Print x; End Sub Private Sub Command1_ Click () Test 2 End Sub

    A.23 47

    B.5 11

    C.10 22

    D.23 29


    正确答案:A

  • 第6题:

    单击命令按钮时,下列程序的执行结果是 Private Sub Book( x As Integer) x=x*2+1 If x<6 Then Call Book(x) End If x=x * 2 + 1 Print x; End Sub Private Sub Command2_Click( ) Book 2 End Sub

    A.23 47

    B.10 36

    C.22 44

    D.24 50


    正确答案:A
    解析:此题在函数调用过程中采用了简单递归的方式,具体流程如下:主调过程调用Book过程,把实参2传递给Book过程中的形参x,由x=x*2+1语句推出x=5,此时满足Book过程体中判断语句的判断条件,执行Call Book(x)语句,第二次调用Book过程。由x=x*2+1语句得到x值为11,判断条件116为假,故返回此调用过程执行x=x*2+1语句得x=23并输出,结束此次调用过程。由于两次调用Book过程,第二次仍返回调用时的断点语句,即执行x=x*2+ 1,Print x,输出x的值为47,返回到主调过程,结束程序,两次输出为23 47,正确答案为选项A。注意: 递归调用法是Visual Basic中一种特殊的函数调用方法。这种函数采用嵌套调用函数本身的方式调用函数。

  • 第7题:

    有如下自定义过程: Sub test(x As Integer) x =X *2+1 If x<6 Then Call test(x) End If x=x* 2 + 1 Print x; End Sub调用该过程的事件过程如下:Private Sub Command1_Click() test 2End Sub则该段程序的执行结果是______ 。

    A.12

    B.23 47

    C.23

    D.5 10


    正确答案:B

  • 第8题:

    执行下列程序后,鼠标单击窗体,输出结果为 Private Sub Form_Click() Print"Click": End Sub Private Sub Form_MouseDown(Button As Integer,Shift_As Integer,X As Single,Y As Single) Print"Donw" End Sub Private Sub Form_MouseUp(Button As Integer,Shift_As Integer,X As Single,Y As Single) Print"Up" End Sub

    A.DownUpClick

    B.CfickDownUp

    C.DownClickUp

    D.UpDownClick


    正确答案:A

  • 第9题:

    在窗体上画一个名称为Command1的命令按钮,然后编写如下事件过程: Private Sub sub1(ByVal x As Integer, ByVal y As Integer, ByVal z As Integer) z=x * x+ y * y End Sub Private Sub Command1_Click() Dim a As Integer a = 8 Call sub1(1, 2,A)Print a End Sub 程序运行后,单击命令按钮,则窗体上显示的内容是

    A.8

    B.2

    C.5

    D.11


    正确答案:A
    解析:因为sub1过程的形参都是传值传送,所以在其内的所有计算结果都将不返回,并不影响对应的实参值,变量a的值并没有改变,仍旧是8。

  • 第10题:

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

  • 第11题:

    在窗体上画一个名称为Commandl的命令按钮,然后编写如下事件过程: Private Sub Command1_Click() Dim x As Integer,y As Integer x = 41: y = 54 Call sub1(x,y) x = x + 1 Print x; y End Sub Private Sub sub1(n As Integer, ByVal m As Integer) n=n Mod 10 m=m\10 End Sub 程序运行后,单击命令按钮,则窗体上显示的内容是

    A.41 54

    B.2 54

    C.1 3

    D.42 3


    正确答案:B
    解析:在Function((参数表列))过程中,“参数表列”指明了调用时传送给过程的参数类型和个数,每个参数的格式为:[ByVal][ByRef]变量名[()][As数据类型]其中系统默认为ByRef,它指明参数传送是以传地址进行的,实际参数变量的值会由于过程中对形参的操作而改变。而ByVal则不同,参数传送,是以传值传送的,实际参数变量的值不再由于过程中对形参的操作而改变,本题目中过程sub1的参数n是传地址引用,而参数m是传值引用,因此x的值改变,x=21\10+1=2;而y值不改变,仍为54。答案为选项B。

  • 第12题:

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

  • 第13题:

    单击命令按钮时,下列程序代码的执行结果为 Public Sub proc1(n As Integer,Byva1 m As Integer) n=n Mod 10 m=m Mod 10 End Sub Private Sub Cmmand1_Click( ) Dim x As Integer,y As lngeger x=12:y=12 Call Proe1(x,y) Print x;y End Sub

    A.12 2

    B.2 12

    C.2 2

    D.12 12


    正确答案:B
    解析:由于n为默认的传地址参数,m为传值参数,故在调用Proc1过程后,x值为经过处理后的值,y为原值,不发生改变。

  • 第14题:

    在窗体中添加一个名称为Command1的命令按钮,然后编写如下程序: Public x As Integer Private Sub Command1_Click() x=10 Call s1 Call s2 MSgBox x End Sub Private Sub s1() x=x+20 End Sub Private Sub s2() Dim x As Integer x=X+20 End Sub 窗体打开运行后,单击命令按钮,则消息框的输出结果为______。

    A.10

    B.30

    C.40

    D.50


    正确答案:B
    解析:本题使用Call关键字调用子过程s1,s2。x=10在调用子过程s1后,x=30,但由于在s1中直接使用变量,所以该值的作用范围是局部的,即只限于s1子过程中,没有传回。在调用s2时,由于s2使用Dim...As关键字定义x,所以其值是模块范围的。故在消息框中输出的值,是从子过程s2传回的值。

  • 第15题:

    单击窗口时,下列程序代码的执行结果为 Private Sub Form_Click( ) Text1 End Sub Private Sub Text(x As Integer) x=x*3+1 if x<6 Then call Text(x) End if x=x*2+1 Print x; End Sub

    A.27 55

    B.11 35

    C.22 45

    D.24 51


    正确答案:A
    解析:难点在于Sub过程Text中嵌套了一个Text过程。根据Text的描述,当把1以传地址的方式传送给x时,x的值为4,此时x的值满足If条件,所以再次执行1次Text过程。第2次执行时,x的值变为13,此时跳过If语句,执行x=x*2+1语句,x值变为27,随后用Print方法输出。注意,到此时,整个Text过程仅仅执行完了callText(x)这一语句块,结束这个语句块,系统接着执行x=x*2+1语句,由于x参数的传地址的方式传送,此时在执行该句前,x的值为27,执行完之后x的值为55,再将这一值输出。窗体上显示27与55。

  • 第16题:

    单击命令按钮时,下列程序的执行结果是 Private Sub Command1_Click() BT 4 End Sub Private Sub BT(x As Integer) x=x*2+1 If x<6 Then Call BT(x) End If x=x*2 Print x; End Sub

    A.15

    B.16

    C.17

    D.18


    正确答案:D
    解析:此题在函数调用过程中采用了简单递归的方式,具体流程如下:主调过程调用BT过程,把实参4传递给BT过程中的形参x,由x=x*2+1语句推出x=9,此时不满足BT过程中判断语句的判断条件,执行x=x*2;Print x;语句。由x=x*2语句得到x值为18并输出,结束此次调用过程,返回到主调过程结束程序,输出结果为18。

  • 第17题:

    在窗体中添加一个名称为Commandl的命令按钮,然后编写如下程序:Public X As Integer Private Sub Commandl Click( )x=10 Call slCall s2MsgBox x End Sub Private Sub sl( )x=x+20 End Sub Private Sub s2( )Dim x As Integer x=x+20End Sub窗体打开运行后,单击命令按钮,则消息框的输出结果为( )。

    A.10

    B.30

    C.40

    D.50


    正确答案:B
    B。【解析】在本题中,定义了一个全局变量X,在命令按钮的单击事件中对这个X赋值为10,然后依次调用sl和s2;在s1中对X自加了20;在s2中用Dim定义了一个局部变量x,按照局部覆盖全局的原则,在s2中的操作都是基于局部变量X而不是全局变量X。所以本题输出结果为30。

  • 第18题:

    单击命令按钮时,下列程序代码的执行结果为 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是正确的。

  • 第19题:

    在窗体中添加一个名称为Command1的命令按钮,然后编写如下程序: Public x As Integer Private Sub Command1_Click() x=10 Call s1 Call s2 MsgBox x End Sub Private Sub sl() x=x+20 End Sub Private Sub s2() Dim x As Integer x=x+20 End Sub 窗体打开运行后,单击命令按钮,则消息框的输出结果为( )。

    A.10

    B.30

    C.40

    D.50


    正确答案:B
    解析: 本题考查变量作用域的知识。在整个程序中定义了一个全局变量x,在命令按钮的单击事件中对这个x赋值为10,然后依次调用s1和s2;在s1中对x自加了20;在s2中用Dim定义了一个局部变量x,按照局部覆盖全局的原则,在s2中的操作都是基于局部变量x而不是全局变量x。故此最终的输出结果为30。

  • 第20题:

    单击命令按钮时,下列程序的执行结果是 Private Sub Book(x As Integer) x=x * 2 + l If x<6 Then Call Book(x) End If X=X * 2 + 1 Print x; End Sub Private Sub Command2_Click() Book2 End Sub

    A.23 47

    B.10 36

    C.22 44

    D.24 50


    正确答案:A
    解析:此题在函数调用过程中采用了简单递归的方式,具体流程如下:主调过程调用Book过程,把实参2传递给Book过程中的形参x,由x=x*2+1语句推出x=5,此时满足Book过程体中判断语句的判断条件,执行CallBook(x)语句,第二次调用Book过程。由x=x*2+1语句得到x值为11,判断条件1l6为假,故返回此调用过程执行x=x*2+1语句,的x=23并输出,结束此次调用过程。由于两次调用Book过程,第二次仍返回调用时的断点语句,即执行x=x*2+1,Printx,输出x的值为47,返回到主调过程,结束程序,两次输出为2347,正确答案为选项A。

  • 第21题:

    单击命令按钮,下列程序的执行结果是 Private Sub Blck (x As Integer) x = x * 2 + l If x <6 Then Call Blck(x) End If x = x * 2 + 1 Print x; End Sub Private Sub Commandl_Click() Blck 2 End Sub

    A.23 47

    B.10 36

    C.22 44

    D.24 50


    正确答案:A
    解析:考查考生对过程的理解。@解析@此题在函数调用过程中采用了简单递归的方式,具体流程如下:主调过程调用Blck过程,把实参2传递给Blck过程中的形参x,由x=x*2+1语句推出x=5,此时满足Blck过程体中判断语句的判断条件,执行CallBlck(x)语句,第二次调用Blck过程。由x=x*2+1语句得到x值为11,判断条件116为假,故返回此调用过程,执行x=x*2+l语句,的x=23并输出,结束此次调用过程。由于两次调用Blck过程,第二次仍返回调用时的断点语句,即执行x=x*2+1,Printx,输出x的值为47,返回到主调过程,两次输出为2347。

  • 第22题:

    程序段如下,当发生Form_Click事件时,窗体上输出的结果是( )。 Option Explicit Private x As Integer Public y As Integer Sub Test() Dim y as integer x=2:y=2 Print"x1=";x;"y1=";y End Sub Private Sub Form_Click() x=1:y=1 Test Print "X2=";x;"y2=";y End Sub

    A.x1=2 y1=2 x2=2 y2=1

    B.x1=2 y1=2 x2=2 y2=2

    C.x1=2 y1=1 x2=2 y2=2

    D.x1=2 y1=1 x2=2 y2=1


    正确答案:A
    解析:本题首先定义了一个窗体级变量x和一个全局变量y。当发生窗体的单击事件后,给窗体级变量x和全局变量y分别赋值1,然后调用Test函数。在该函数中定义了一个局部变量y,在函数中使用的y是局部变量,给窗体级变量x赋值2,给局部变量y赋值2,输出的x和y的值都是2。函数调用返回后,窗体级的变量x的值为2,全局变量y的值依旧为1。

  • 第23题:

    单击命名按钮时,下列程序代码的执行结果为 Public Sub procl ( n As Integer, Byval m As Integer) n=n Mod 10 m=m Mod 10 End Sub Private Sub Cmmand1 Click() Dim x As Integer, y As Integer x=12:y=12 Call Procl (x, y) Print x;y End Sub

    A.12 2

    B.2 12

    C.2 2

    D.12 12


    正确答案:B
    解析:本题为典型的考查传地址与传值区别的题.由于n为默认的传地址参数,m为传值参数,故在调用Procl过程后,x值为经过处理后的值,y为原值,不发生改变。故正确答案为B.

  • 第24题:

    单击命令按钮时,下列程序的执行结果是 Private Sub Commandl_Click( ) BT 4 End Sub PriVate Sub BT(x As Integer) X=X * 2 + 1 If x <6 Then Call BT(x) End If X=x * 2 Print x; End Sub

    A.15

    B.16

    C.17

    D.18


    正确答案:D
    解析:此题在函数调用过程中采用了简单递归的方式,具体流程如下:主调过程调用BT过程,把实参4传递给BT过程中的形参x,由x=x*2+1语句推出x=9,此时不满足BT过程体中判断语句的判断条件,执行x=x*2;Printx;语句。由x=x*2语句得到x值为18并输出,结束此次调用过程,返回到主调过程结束程序,输出结果为18。