在下面的程序中,若调用f1(x)时,参数传递采用传值方式,调用f2(y)时,参数传递采用引用方式,则输出结果为(1);若调用f1(x)时,参数传递采用引用方式,调用f2(y)时,参数传递采用传值方式,则输出结果为(2)。 main() int a=

admin2019-04-09  53

问题 在下面的程序中,若调用f1(x)时,参数传递采用传值方式,调用f2(y)时,参数传递采用引用方式,则输出结果为(1);若调用f1(x)时,参数传递采用引用方式,调用f2(y)时,参数传递采用传值方式,则输出结果为(2)。
   main()
int a=2;
f1(a);
write (a);
procedure f1(x)
f2(x);
x=x+x;
return;
procedure f2(y)
y=y*y;
return;

选项 A、2
B、4
C、6
D、8

答案B

解析 在许多高级语言中,都是以main()函数作为程序入口,这是一个约定俗成的规则,在本题的伪代码中也不例外。程序一开始,首先在main()函数中定义了一个局部变量a,并初始化为2,然后调用f1()过程,若采用传值方式,则f1()不会对变量a做出任何的改变,因为在main()函数中调用f1()过程时,传递给f1()的只是a的值, a内容的一份拷贝,所以不会对main()函数中的变量a造成任何影响。故第1空应该选择A。若调用f1()过程时,采用的是引用方式传递参数,则在f1()过程中,对形参x所作的修改会直接作用到main()函数的变量a上。在f1()中,首先调用f2()过程,由于 f2()此时采用传值方式,所以可以忽略,它不会影响形参x。接下来执行x=x+x, x的值变为4。故最终输出结果,a的值为4,第2空应该选择B。
转载请注明原文地址:https://jikaoti.com/ti/zzL7FFFM
0

最新回复(0)