请教:2004年上半年软件水平考试(初级)程序员上午(基础知识)试题真题试卷第1大题第40小题如何解答?

【题目描述】 在下面的程序中,若实参a与形参x以引用调用(call by reference)的方式传递信息,则输出结果为(1);若实参a与形参x以值调用(call by value)的方式传递信息,那么输出结果为(2)。 Main program Procedure addone(x) a:=1; a:=x+1; addone(a); x:=x+2; write(a); return;A.1 B.2 C.3 D.4 <table><tr><td>【我提交的答案】: A</td></tr><tr><td>【参考答案与解析】: 正确答案:D</td></tr></table>答案分析: 解析:所有函数的定义都是独立的、平行的。在一个函数定义中不允许定义另外一个函数,但可以对别的函数进行调用或做引用说明;它也可以对自身进行调用,即递归调用。函数原型的形式如下: 函数 函数名(形参表); 形参表中的形参名可以省略。函数原型提供了更强的函数检查功能,在编译阶段就能发现函数的返回值的类型以及参数个数和类型是否正确。 传值调用是指把实形参数的值传递给相应的形式参数,子程序不能通过这种方式传回任何结果。 引用调用是指把实形参数的地址传递给相应的形式参数,此时子程序对形式参数的一次引用或赋值都是对形式参数的间接访问。 实参a与形参x以引用调用的方式传递信息,那么,addone(a)则会通过语句“a:= x+1;”和“x:=x+2;”改变a的值。因此,变量a的值变为4。 实参a与形参x以传值调用的方式传递信息,则a的值保持不变。 这里需要说明的是,变量a没有进行声明而在“Main program”和“addone”中进行引用,在这里应当视为全局变量。 我不懂这个答案是怎么得出来的,我觉得解析还不够完整,看不懂

时间:2024-04-21 14:07:22

相似题目