计算机二级

在窗体中添加一个名称为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.10B.30C.40D.50

题目

在窗体中添加一个名称为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。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

在窗体中添加一个名称为Command1的命令按钮,然后编写如下程序:


正确答案:

36 

第2题:

在窗体中添加一个命令按钮,名称为Command1,然后编写如下程序:

Private Sub Command1_Click()

sum=0

For i=1 To 100 step 2

Next i

MsgBox sum

End Sub

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


正确答案:2500
2500 解析: 本题考查循环的知识。这个问题比较简单,实际上就是求1到100之间的奇数和,最终结果为2500。

第3题:

在窗体上添加一个名称为Command1的命令按钮,然后编写如下程序:

Private Sub f(ByVa1 x As Integer)

x=x+4

End Sub

Private Sub Command1_Click()

i=3

Call f(1)

If i>4 Then i=i*2

MsgBox i

End Sub

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


正确答案:3
3 解析:本题考查VBA中参数传递的知识。在VBA的过程调用时,参数有两种传递方式:传址传递和传值传递。如果在过程声明时形参用ByVa1声明,说明此参数为传值调用;若用ByRef声明,说明此参数为传址调用:没有说明传递类型,则默认为传址传递。本题中在定义子过程f的时候用ByVa1声明了形参x,说明为传值调用,此时对x的任何更改不会影响调用它的实参i,所以执行完Call f(i)这条语句后i的值不变仍为3,当然也不满足If语句的条件,故此最后输出结果为3。

第4题:

在窗体中添加一个命令按钮,名称为Commandl,然后编写如下程序:

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


正确答案:
2500【解析】本题考查循环的知识。这个问题比较简单,实际上就是求l到100之间的奇数和,最终结果为2500。

第5题:

在窗体中添加一个名称为Coml的命令按钮,然后编写如下程序:


正确答案:
3【解析】本题考查VBA程序的知识。在VBA的过程调用时,参数有两种传递方式:传址传递和传值传递。如果在过程声明时形参用ByVal声明,说明此参数为传值调用,此时形参的变化不会返回到实参;若用ByRef声明,说明此参数为传址调用,此时形参的变化将会返回到实参;没有说明传递类型,则默认为传址传递。此题中形参P被说明为ByVal传值形式的整型量,当运行Cornl-click过程时调用s函数,实参i传送其值给形参P,P发生变化p=p*2=3*2=6。但因为使用的是ByVal传值传递,所以实参i的值不发生变化,if语句中的判断条件为假,所以会直接执行MsgBox i语句后输出3。

第6题:

在窗体中添加一个名称为Command1的命令按钮,然后编写如下程序:

Private Sub f(ByVal x As Integer)

x=x+4

End Sub

Private Sub Command1_Click()

i=3

Call f(i)

If i>4 Then i=i*2

End Sub

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


正确答案:3
3 解析: 本题考查VBA中参数传递的知识。在VBA的过程调用时,参数有两种传递方式:传址传递和传值传递。如果在过程声明时形参用ByVal声明,说明此参数为传值调用;若用ByRef声明,说明此参数为传址调用;没有说明传递类型,则默认为传址传递。本题中在定义子过程f的时候用ByVal声明了形参x,说明为传值调用,此时对x的任何更改不会影响调用它的实参i,所以执行完callf(i)这条语句后i的值不变仍为3,当然也不满足If语句的条件,故此最后输出结果为3。

第7题:

在窗体中添加一个名称为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传回的值。

第8题:

在窗体中添加一个命令按钮,名称为Command1,然后编写如下程序:

Private Sub Command1_Click()

Dim s,i

For i=1 To 10

s=s+i

Next i

MsgBox s

End Sub

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


正确答案:

55 

第9题:

在窗体中添加一个名称为Command1的命令按钮,然后编写如下程序:Functionfun(xAsInteger)Staticzy=y+1:z=z+1fun=x+y+zEndFunctionPrivateSubCommand1_Click()DimxAsIntegerx=1Fori=1To2Printfun(x)NextiEndSub程序运行后,如果单击命令按钮,窗体中显示的内容是( )

A、33

B.34

C.3

D.3


正确答案:D

第10题:

( 11 )在窗体中添加一个命令按钮,名称为 Command1 ,然后编写如下程序:

Private Sub Command1_Click()

Dim s , i

For i=1 To 10

s=s+i

Next i

MsgBox s

End Sub

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


正确答案: