问题 单项选择题

在下面的程序中,若实参a与形参x以引用调用的方式传递信息,则输出结果为 (1) ;若实参a与形参x以值调用的方式传递信息,那么输出结果为 (2)
Mainprogram
a:=1;
addone(a);
write(a);
Procedure addone(x)
a:=x+1;
x:=x+2;
return;

(2)

A.1

B.2

C.3

D.4

答案

参考答案:B

解析: 引用调用是指把实参的地址传递给相应的形参,此时子程序对形参的改变会同时改变实参的值。值调用是指把实参的值传递给相应的形参,此时子程序对形参的改变不会影响实参的值。所以,如果本题以引用调用,则在addone过程中,首先执行a:=x+1会将a加1,然后执行x:=x+2会对形参x加2,因为是引用调用,所以实参a也会加2,故a最终被加3,第1空应该选择D。 如果以值调用,在addone过程中,只有a:=x+1语句会影响a的值,x:=x+2只影响形参x的值,并不会影响实参a,故a最终被加1,第2空应该选择B。

单项选择题
单项选择题