本题考查程序语言基础知识。 函数 f1被调用而运行时,其局部变量值的变化情况如下:在调用口f2(a)之前,x 的值 为1,a的值为 5。在以引用调用方式调用f2(a)时,形参 x 是实参 a 的引用,在函数 f2中的 x 就是函数f1 中 a 的别名(或者说此时 x与 a 所对应的存储单元是同一个,只是角度不同而己),因此执行函数f2时,条件表达式 x>1 即等同于a>1, a 的值是 5 所以该条件表达式成立,从而执行了 "x = x*x",就将x 所对应存储单元的内容改为了 25 ,然后结束f2的执行并将所返回的-10 赋值给 f1 中的 x ,因此在f1结束时返回的值为a+x=25-10=15。 在值调用方式下调用f2(a)时,是将实参 a 的值 5 传递给f2的形参 x ,a 和 x 所对应 的存储单元是不同的,此后执行f2时,由于 x 的值是 5,所以条件表达式x>1 即等同于 5>1 ,是成立的,从而执行了"x = x*x",此时是将f2中的x 修改为 25 ,与f1中的 a 和 x 都无关,在结束f2的执行并将返回值-10 赋值给 f1中的 x 后,f1结束时进行的计算为a+x=5-10=-5.