结构推理
对于下面的程序:
Procedure p(x,y,z);
begin
y:=y+
z:=z+x
end;{p}
begin
a:=4;
b:=5;
p(a+b,a,a);
print a
end.
如果上述程序参数传递的方法分别为:
【正确答案】参数传递的方法为传名时,输出a的值是15。
【答案解析】参数传递的方法为传名时,相当于调用过程p时将过程p中的形参替换为实参,即过程p被替换为下面这段程序:
Procedure p(a+b,a,a);
begin
a:=a+1;
a:=a+a+b
end;{p)
该过程中语句"a:=a+1"执行后,am值变为5,接下来执行后面的语句"a:=a+a+b",则赋值号右边的两个am值都是5,因此执行该语句后a的值就被修改为15。