niusouti.com
参考答案和解析
正确答案:A
更多“假定有如下事件过程: PrivateSubForm_Click() DimxAsInteger,nAsInteger x=1 n=0 DoWh ”相关问题
  • 第1题:

    假定有如下事件过程: Private Sub Form. Click() Dim x As Integer, n As Integer x=1 n=0 Do While x<28 x=x*3 n=n+1 Loop Print x, n End Sub 程序运行后,单击窗体,输出结果是______。

    A.81 4

    B.56 3

    C.28 1

    D.243 5


    正确答案:A
    解析:Do While-Loop循环语句的判断条件为“x28”。循环语句“x=x*3”的作用是每循环一次将成为原数的3倍,而变量n用来记录循环次数,当循环3次后,x得27,有2728,再循环一次后x得81,有81>28,不再满足循环条件,此时n为4。执行Print语句,输出x和n的值,即输出81和4。

  • 第2题:

    假定有如下事件过程: Private Sub Form_Cilck() Dim x As Integer,n As Integer x=1 n=0 Do While x<28 X=X*3 n=n+1 Loop Print x,n End Sub 程序运行后,单击窗体,输出结果为______。

    A.81 4

    B.56 3

    C.28 1

    D.243 5


    正确答案:A
    解析:DoWhile语句是当While后面的条件为True时,执行循环体,当条件为False时退出循环。本题的条件是x28,而循环体中的语句是X=x*3,所以当x值为81时,退出循环体,此时共执行了4次循环体,所以n的值为4。

  • 第3题:

    在窗体中添加一个名称为Commandl的命令按钮,然后编写如下事件代码:

    Private Sub Command1_Click()

    Dim x As Integer,y As Integer

    x=12:y=32

    Call p(x,y)

    MsgBox x*y

    End Sub

    Public Sub p(n As Integer,By Val m As Integer)

    n=n Mod 10

    m=m Mod 10

    End Sub

    窗体打开运行后,单击命令按钮,则消息框的输出结果为【 】。


    正确答案:64
    64 解析:子过程p有两个参数m和n,参数m,n是整型,而通过“ByVal”可知,参数m是按值传递的参数。由于在过程定义时未做参数说明的情况下,默认为传址调用,所以参数n是按址传递。(按址传递的过程调用是将相应位置实参的地址传送给形参处理,而被调用过程内部对形参的任何操作引起的形参值的变化又会反向影响实参的值。在这个过程中,数据的传递具有双向性。)在命令按钮单击事件过程中,程序通过两个实参x,y为形参m,n赋值,“n=n Mod 10”表示12与10取余,结果为2,由于n是传址调用,所以返回实参的结果:x=2,而形式参数m因为被“ByVal”修饰,所以过程调用只是将实参y的值“单向”传送给形参 m处理,而被调用过程内部对形参m的取余操作引起的形参值的变化均不会反馈、影响实参y的值,也就是说实参y=32,通过语句“MsgBox x*y”,可以得出:x*y=2*32=64,也就是窗体打开运行后,单击命令按钮,则消息框的输出结果为64。

  • 第4题:

    |在窗体上有一个命令按钮Commandl,编写事件代码如下: Private Sub Commandl_Click( ) Dim X As Integer,Y As Integerx=12:y=32Call Proc(x,y)EndSubPublic Sub Proc{n As Integer,ByVM mAs mteger}n=nMod l0m=mModl0EndSub打开窗体运行后,单击命令按钮,立即窗口上输出的结果是( )。l考点5过程调用与参数传递1

    A.2 32

    B.12 3

    C.2 2

    D.12 32


    正确答案:A
    在VBA的过程调用时,参数有两种传递方式:传址传递和传值传递。如果在过程声明时形参用ByVal声明,说明此参数为传值调用,此时形参的变化不会返回到实参;若用ByRef声,说明此参数为传址调用,此时形参的变化将会返回到实参;若没有说明传递类型,则默认为传址传递。因此调用函数实参x是传址方式传递,实参Y为传值方式传递,调用函数后X值在函数中随形参改变,即x=xroodl0=12modl0=2,而Y不随之改变。

  • 第5题:

    在窗体上画一个名称为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。