刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

单选题

已知函数f()、g()的定义如下所示,调用函数f时传递给形参x的值是5。若g(a)采用引用调用(callbyreference)方式传递参数,则函数f的返回值为(1);若g(a)采用值调用(callbyvalue)的方式传递参数,则函数f的返回值(2)。其中,表达式“x>>1”的含义是将x的值右移1位,相当于x除以2。

1、____


A
35
B
32
C
11
D
7
使用微信搜索喵呜刷题,轻松应对考试!

答案:

C

解析:

根据题目描述,函数f中调用了函数g,并且涉及到参数传递的方式。题目给出了两种传递方式:引用调用和值调用。对于引用调用(call by reference),形参直接引用实参的内存地址,对形参的修改会影响到实参的值;对于值调用(call by value),形参是实参的副本,对形参的修改不会影响到实参的值。

在给定的函数中,表达式 “x>>1” 的含义是将x的值右移一位,相当于x除以2。题目中提到调用函数f时传递给形参x的值是5。

  1. 若采用引用调用方式(call by reference):
    • 在函数g内部,对a进行运算后,由于是直接引用x的地址,所以x的值会被修改为新的值(具体取决于g函数的实现)。
    • 在函数f中,计算a+x时,因为x已经被修改,所以结果是修改后的x值加上a的值。假设g函数内部实现了将x翻倍的操作(仅为示例),则执行完g后x变为10,所以a+x = 2 + 10 = 12。但题目中并未给出具体的g函数实现,所以我们无法确定具体的返回值。
  2. 若采用值调用方式(call by value):
    • 在函数g内部,对形参a进行运算,这个运算不会影响到实参x的值。
    • 在函数f中,计算a+x时,使用的是传递给函数g的a的副本和原始的x值。给定x=5,假设a经过某种运算后变为2(仅为示例),则a+x = 2 + 5 = 7。

由于题目要求的是函数f的返回值,而在值调用方式下可以确定f的返回值为7(假设a经过某种运算后变为2)。因此,正确答案是 D、7。

创作类型:
原创

本文链接:已知函数f()、g()的定义如下所示,调用函数f时传递给形参x的值是5。若g(a)采用引用调用(ca

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share