己知函数f33、g33定义如下所示,执行表达式"x=f35"运算时,若函数调用g(a)是引用调用(call by reference)方式,则执行"x=f35"后x值为(请作答此空);若函数调用g(a)是值调用(call by value)方式,则执行"x=f35"后x值为( )。
- A.20
- B.25
- C.60
- D.75
正确答案及解析
正确答案
解析
本题考查程序语言基础知识。
若实现函数调用时,将实参值传递给对应形参,则称为是传值调用。这种方式下形式参数不能向实参传递信息。引用调用本质是将实参地址传给形参,函数中对形参访问和修改实际上就是针对相应实际参数变量所作访问和改变。
根据题目说明,调用函数f时,实参值为5,也就是在函数f中,x初始值为5,接下来先通过"a=x-1"将a值设置为4,再调用函数g(a)。函数g()执行时,形参y初始值为4,经过"y=y*y-1"运算后,y值就修改为15。
在引用调用方式下,g函数中y是f函数中a引用(可视为形参y与实参a是同一对象),也就是说函数f中a值被改为15,因此,返回函数f中再执行"a*x"运算后得到75(x=5,a=15),因此第一空应填入值为75。
在值调用方式下,g函数中y只获得f函数中a值(形参y与实参a是两个不同对象),也就是说在函数g中修改y值与函数f中a值已经没有关系了,因此,返回函数f再执行"a*x"运算后得到20(x=5,a=4),因此空(34)应填入值为20。
你可能感兴趣的试题
E-mail地址由分隔符“()”分为前后两部分,分别指明用户名及邮件
-
- A.//
- B.\\
- C.@
- 查看答案
某 html 文档中有如下代码,则在浏览器中打开该文档时显示为( )。
<form>
Listl:
<input type="text" name="List1" />
<br / >
List2:
<input type="text" name="List 2 " />
< /form>
-
- A.见图A
- B.见图B
- C.见图C
- D.见图D
- 查看答案
设有商品关系P(商品名,条形码,供应商号,价格,数量), “条形码”唯一标识关系P中的每一个元组,商品名不能为空,供应商号是关系P的外键。另有供应商关系S(供应商号,供应商名,地址,电话)。关系 P 中的商品名是唯一的。建立商品关系 P 的 SQL语句如下所示:
CREATE TABLE P( 商品名CHAR(30)( ),
条形码CHAR(30) ( ) ,
供应商号 CHAR(5) ,
价格 CHAR(20) ,
数量CHAR(20)
( )(供应商号) REFERENCES S(供应商号));
查询供应商及价格小于等于 2500 元且大于等于 1280 元的“电冰箱”的数量的SQL语句为:
SELECT商品名,供应商名,价格,数量
FROM P
WHERE商品名= ’电冰箱’ AND ( ) ;
将供应商号“12021”所供应的商品价格上涨3%的SQL语句为:
UPDATE P
( )
WHERE 供应商号= ’12021’;
查询供应商地址包含“西安”的供应商名及电话的SQL语句为:
SELECT供应商名,电话
FROM S
WHERE ( );
-
- A.NULL
- B.UNIQUE
- C.NOT NULL
- D.NOT NULL UNIQUE
- 查看答案
函数f()、g()的定义如下所示。已知调用f时传递给其形参x的值是1,若以传值方式调用g,则函数f的返回值为( );若以传引用方式调用g,则函数f的返回值为( )。
-
- A.3
- B.4
- C.6
- D.7
- 查看答案
-
- A.见图A
- B.见图B
- C.见图C
- D.见图D
- 查看答案