问题
单项选择题
在下面的程序中,若实参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。