在窗体上画—个命令按钮(名称为Command1),并编写如下代码:Function Fun1 (ByVala As Integer, b As Integer)As Integer Dim t As Integer t=a-b b=t+

admin2009-09-28  33

问题 在窗体上画—个命令按钮(名称为Command1),并编写如下代码:Function Fun1 (ByVala As Integer, b As Integer)As Integer    Dim t As Integer    t=a-b    b=t+ a    Fun 1=t+ bEnd FunctionPrivate Sub Command1_ Click()    Dim x As Integer    x=10    Print Fun1(Fun1 (x,(Fun1(x,x-1))),x-1)End Sub程序运行后,单击命令按钮,输出结果是 ______。

选项 A、10
B、0
C、11
D、21

答案B

解析 ByVal表示所声明的参数是按值传递的。因此参数值的变化只在被调用的函数或过程中有效,即只是形参的值有变化,而实参不受影响。ByRef表示所声明的参数是按地址传递的,形参值的变化都会反映在实参上。如果形参名前面缺省修饰词,默认为ByRef形式。
   程序声名了一个拥有两个形参变量的函数Fun1(),形参变量a按值传递参数,变量b按地址传递参数。执行命令按钮Command1的Click事件后,三次调用函数Fun1(),程序执行的过程如下:
1、首先调用最里面一层的Fun1函数Fun1(x,x-1),此时,a=10,b=9,t=10-9=1,b=t+ a=1+10=11,Fun1=t+ b=12,所以第一个Fun1返回值为12。
2、接着调用中间一层Fun1函数Fun1(x,(Fun1(x,x-1)),因为形参变量a按值传递参数,形参的变化并不影响实参,所以x的值仍为10,Fun1(x,x-1)得到的返回值为12,此时,a=10,b=12,t=10-12=-2,b=t+ a=-2+10=8,Fun1=-2+8=6,所以中间一层的Fun1返回值为6。
3、最后调用最外一层Fun1(Fun1(x,(Fun1(x,x-1))),x-1),Fun1(x,(Fun1(x,x-1)))的返回值为6,x-1=9,此时a=6,b=9,t=10-9=-3,b=t+ a=3+6=3,Fun1=3+3=0,所以最后的值为0。
转载请注明原文地址:https://kaotiyun.com/show/6S1p777K
0

最新回复(0)