●函数t、f的定义如下所示,其中,a是整型全局变量。设调用函数t前a的值为5,则在函数t中以传值调用(call by value)方式调用函数f时,输出为(49);在函数t中以引用调用( call by reference)方式调用函数f时,输出为(50)。(49)A. 12B. 16C. 20D. 24(50)A. 12B. 16C. 20D. 24

题目

●函数t、f的定义如下所示,其中,a是整型全局变量。设调用函数t前a的值为5,则在函数t中以传值调用(call by value)方式调用函数f时,输出为(49);在函数t中以引用调用( call by reference)方式调用函数f时,输出为(50)。

(49)

A. 12

B. 16

C. 20

D. 24

(50)

A. 12

B. 16

C. 20

D. 24


相似考题
参考答案和解析
正确答案:B,D
更多“●函数t、f的定义如下所示,其中,a是整型全局变量。设调用函数t前a的值为5,则在函数t中以传值调用(call by value)方式调用函数f时,输出为(49);在函数t中以引用调用( call by reference)方式调用函数f时,输出为(50)。(49)A. 12B. 16C. 20D. 24(50)A. 12B. 16C. 20D. 24”相关问题
  • 第1题:

    ● 函数 f和g 的定义如下图所示。执行函数 f时需要调用函数 g(a),若采用值调用方式 (call by value) 调用 g(a), 则函数 f的返回值为 (32) ; 若采用引用 (call by reference)方式调用 g(a),则函数 f的返回值为 (33) 。

    (32)

    A. 6

    B. 13

    C. 25

    D. 28

    (33)

    A. 35

    B. 28

    C. 25

    D. 13


    正确答案:D,A

  • 第2题:

    ● 函数t()、f()的定义如下所示,若调用函数t时传递给x的值为3,并且调用函数f()时,第一个参数采用传值(call by value)方式,第二个参数采用传引用(call by reference)方式,则函数t的返回值为 (49) 。

    (49)A. 35 B. 24 C. 22 D. 11


    正确答案:B

  • 第3题:

    已知函数f1()、f2()的定义如下图所示,如果调用函数f1时传递给形参x的值是2,若a和y以引用调用(call by reference)的方式传递信息,则函数f1的返回值为(47);若a和y以值调用(call by value)的方式传递信息,则函数f1的返回值为(48)。

    A.6

    B.10

    C.14

    D.随机数


    正确答案:C
    解析:引用调用和值调用是进行过程(函数)调用时实在参数与形式参数间传递信息的两种基本方式。在过程(或函数)首部声明的参数称为形式参数,简称形参;过程(或函数)调用时的参数称为实在参数,简称实参。调用语句实现了对过程(或函数)语句的执行,调用时首先要进行实参与形参间的参数传递。简单地说,以值调用方式进行参数传递时,需要先计算出实参的值并将其传递给对应的形参,然后执行所调用的过程(或函数),在过程(或函数)执行时对形参的修改不影响实参的值。而引用调用时首先计算实际参数的地址,并将此地址传递给被调用的过程,然后执行被调用的过程(或函数)。因此在被调用的过程(函数)中,既得到了实参的值又得到了实参的地址。引用调用方式下,被调用过程(函数)执行时针对形式参数的修改将反映在对应的实在参数变量中。在引用调用方式下,题目中过程f2的执行语句对y的修改结果就是a的值,即a的值在f2中被改为7(即y=2*3+1),在f1中没有修改x的值,所以f1的返回值为14(7*2)。在值调用方式下,在f2中修改y的值不会影响实参a,所以f1的返回值为6(3*2)。

  • 第4题:

    函数f()、g()的定义如下图所示,调用函数f()时传递给形参a的值为1。若采用传值(call by value)的方式调用g(c),则函数f()的返回值为(29);若采用传引用(call by reference)的方式调用g(c),则函数f()的返回值为(30)。

    A.7

    B.5

    C.4

    D.3


    正确答案:D
    解析:本题考查参数传递的基本知识。引用调用和值调用是进行过程(函数)调用时实际参数与形式参数间传递信息的两种基本方式。在过程(或函数)首部声明的参数称为形式参数,简称形参;过程(或函数)调用时的参数称为实际参数,简称实参。调用语句实现了对过程(或函数)语句的执行,调用时首先要进行实参与形参间的参数传递。简单地说,以值调用方式进行参数传递时,需要先计算出实参的值并将其传递给对应的形参,然后执行所调用的过程(或函数),在过程(或函数)执行时对形参的修改不影响实参的值。而引用调用时首先计算实际参数的地址,并将此地址传递给被调用的过程,然后执行被调用的过程(或函数)。因此在被调用的过程(函数)中,既得到了实参的值又得到了实参的地址。引用调用方式下,被调用过程(函数)执行时针对形式参数的修改将反映在对应的实际参数变量中。调用函数f()时传递给形参a的值为1,因此局部变量c的初始值为2。在传值调用方式下,执行函数g()不会影响实参c,因此函数f()的返回值为3;在引用调用方式下,执行函数g()时,对b的修改等同于对c进行修改,因此在g()中,局部变量x的值为4,参数b的值修改为4,因此函数调用g(c)结束后,c的值为4,函数q)的返回值为5。

  • 第5题:

    函数t()、f()的定义如下所示。若调用函数t()时传递给x的值为3,并且调用函数f()时,第一个参数采用传值(call by value)方式,第二个参数采用传引用(call by reference)方式,则函数t0的返回值为(33).

    A.35

    B.24

    C.22

    D.11


    正确答案:B
    解析:本题考查函数调用时的参数传递问题。采用传值方式时,是将实际参数的值传递给形式参数,对形式参数值的修改不会影响实际参数。采用引用方式时,是将实际参数的地址传递给形式参数,对形式参数进行修改,等同于是对实际参数进行修改。

  • 第6题:

    已知函数fl()、f2()的定义如下图所示设调用函数f1时传递给形参x的值是1,若函数调用f2(a)采用引用调用(call by refere nce)的方式传递信息,则函数n的返回值为 (32) ;若函数调用f2(a)以值调用(call liy value)的方式传递信息,则函数F1返回值为(33)。

    A.-5

    B.6

    C.15

    D.35


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

  • 第7题:

    函数main()、f()的定义如下所示。调用函数f()时,第一个参数采用传值 (call by value) 方式,第二个参数采用传引用 (call by reference )方式,main()执行后输出的值为( )。

    A.2
    B.4
    C.5
    D.8

    答案:D
    解析:

  • 第8题:

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

    A.35
    B.32
    C.11
    D.7

    答案:D
    解析:
    本题考查程序语言基础知识。
    首先分析函数f的语句执行过程。形参x的值为5,将x的值(二进制形式高位都为0,低八位为00000101)右移1位后赋值给a,使得a的值为2(二进制形式高位都为0,低八位为00000010),然后执行函数调用g(a)。
    若以引用调用方式调用g(a),则在函g执行时,其形参x相当于是f中a的别名,对于运算“x=x*(x+1)”,此运算前x的值为2,运算后x的值改变为6,返回到函数f后a的值被改变为是6,在f中a和x是两个数据对象,所以f结束时返回a+x的值为11(5+6)。
    若以值调用方式调用g(a),则在函数g执行时,其形参x是一个独立的数据对象(值为2),接下来进行运算“x=x*(x+1)”,运算前x的值为2,运算后x的值改变为6,最后返回到函数f,a的值不改变,仍然是2,所以f结束时返回a+x的值为7(即2+5)

  • 第9题:

    函数main( )、f( )的定义如下所示。调用函数f( )时,第一个参数采用传值(call by value)方式,第二个参数采用引用调用(call by reference)方式,main( )执行后输出的值为( )

    A.2
    B.4
    C.5
    D.8

    答案:D
    解析:
    本题考查程序设计语言中传值方式和引用方式的基本知识。f(int x, int&a)函数中 x=2*2+1=5; a=5+3=8, 且a是引用,对应main()函数中x,所以x的值为8。故正确答案为:D

  • 第10题:

    函数t( )、f( )的定义如下所示,若调用函数t时传递给x的值为5,并且调用函数F( )时,第一个参数采用传值(call by value)方式,第二个参数采用传引用(call by reference)方式,则函数t的返回值为( )

    A.33
    B.22
    C.11
    D.负数

    答案:A
    解析:
    当程序执行到函数t中,调用f(x,a)时,x=5,a=16。当程序在f(x,a)中执行完成之后,对r的值的改变,并不会影响实参值,但对s的修改会改变调用的实参值,在f(x,a)中执行完成之后s的值变为38,所以对应实参值a也是38。最后返回值是:a-x,即38-5=33

  • 第11题:

    函数main( )、f( )的定义如下所示,调用函数们f( )时,第一个参数采用传值 (call by value) 方式,第二个参数采用传引用 (call by reference) 方式, main( ) 函数中 "print(x)" 执行后输出的值为 ( )。

    A.11
    B.40
    C.45
    D.70

    答案:C
    解析:
    传值与传引用的区别是:值传递时,实参被拷贝了一份,只能在函数体内使用。因此,a代表的其实就是x本身,只有a的变化才能导致main函数里面的x值的变化。

  • 第12题:

    函数 main( ) 、f( )的定义如下所示。调用函数 f( )时,第一个参数采用传值 (call by value)方式,第二个参数采用传引用(call by reference)方式,则函数 main( )执行后输出的值为(50)。

    A.10
    B.19
    C.20
    D.29

    答案:D
    解析:
    X=19,a=29。因为a属于传引用,最后结果是29。

    传值与传引用的区别是:值传递时,实参被拷贝了一份,只能在函数体内使用。因此题干中的x=19,只能作用于f函数中。

  • 第13题:

    ● 函数t()、f()的定义如下所示。若调用函数t()时传递给x的值为3,并且调用函数f()时,第一个参数采用传值(call by value)方式,第二个参数采用传引用(call by reference)方式,则函数t()的返回值为(33) 。


    正确答案:B

  • 第14题:

    ● 在下面的程序代码中,a 是全局变量。若以引用调用(call by reference)方式调用函数 f,则输出结果为 (34) ;若以值调用(call by value)方式调用函数 f,输出结果为 (35) 。

    (34)

    A. 10

    B. 40

    C. 36

    D. 72

    (35)

    A. 10

    B. 40

    C. 36

    D. 72


    正确答案:D,B

  • 第15题:

    函数f()、g()的定义如下所示,调用函数f时传递给形参x的值为5,若采用传值(call by value)方式调用g(a),则函数f的返回值为(1);若采用传引用(call by reference)方式调用g(a),则函数f的返回值为(2)。

    A.14

    B.16

    C.17

    D.22


    正确答案:A

  • 第16题:

    函数f()、g()的定义如下所示,调用函数f()时传递给形参x的值为1。

    若采用传引用(call by reference)的方式调用g(y),则函数f()的返回值为(49);

    若采用传值(call by value)的方式调用g(y),则函数f的返回值为(50)。

    A.3

    B.6

    C.7

    D.8


    正确答案:C

  • 第17题:

    已知函数f()、g()的定义如下所示,执行表达式”x=f(5)”的运算时,若函数调用g(a)是引用调用(call by reference)方式,则执行”x=f(5)”后x的值为 ( ) ;若函数调用g(a)是值调用(call by value)方式,则执行”x=f(5)”后x的值为 ( ) 。

    A.20 B.25 C.60 D.75A.20 B.25 C.60 D.75


    正确答案:D,A

  • 第18题:

    已知函数f132、f232的定义如下图所示。设调用函数f1时传递给形参x的值是1,若函数调用f2(a)采用引用调用(call by reference)的方式传递信息,则函数f1的返回值为(请作答此空);若函数调用f2(a)以值调用(call by value)的方式传递信息,则函数f1的返回值为( )。

    A.-5
    B.6
    C.15
    D.35

    答案:C
    解析:
    本题考查程序语言基础知识。
    函数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。

  • 第19题:

    已知函数f()、g()的定义如下所示,执行表达式”x=f(5)”的运算时,若函数调用g(a)是引用调用(call by reference)方式,则执行”x=f(5)”后x的值为 () ;若函数调用g(a)是值调用(call by value)方式,则执行”x=f(5)”后x的值为 (请作答此空) 。

    A. 20
    B. 25
    C. 60
    D. 75

    答案:A
    解析:
    本题考查程序语言基础知识。若实现函数调用时,将实参的值传递给对应的形参,则称为是传值调用。这种方式下形式参数不能向实参传递信息。引用调用的本质是将实参的地址传给形参,函数中对形参的访问和修改实际上就是针对相应实际参数变量所作的访问和改变。根据题目说明,调用函数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),因此第二空应填入的值为20。

  • 第20题:

    己知函数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

    答案:A
    解析:
    本题考查程序语言基础知识。
    若实现函数调用时,将实参的值传递给对应的形参,则称为是传值调用。这种方式下形式参数不能向实参传递信息。引用调用的本质是将实参的地址传给形参,函数中对形参的访问和修改实际上就是针对相应实际参数变量所作的访问和改变。
    根据题目说明,调用函数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。

  • 第21题:

    已知函数f( )、g( )的定义如下所示,执行表达式"x=f(5)"的运算时,若函数调用g(a)是引用调用(call by reference)方式,则执行"x=f(5)"后x的值为( );若函数调用g(a)是值调用(call by value)方式,则执行"x=f(5)"后x的值为(请作答此空)。


    A.20
    B.25
    C.60
    D.75

    答案:A
    解析:
    本题考查程序语言基础知识。
    若实现函数调用时,将实参的值传递给对应的形参,则称为是传值调用。这种方式下形式参数不能向实参传递信息。引用调用的本质是将实参的地址传给形参,函数中对形参的访问和修改实际上就是针对相应实际参数变量所作的访问和改变。
    根据题目说明,调用函数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),因此第二空应填入的值为20。

  • 第22题:

    函数f和g的定义如下图所示。执行函数f时若采用引用(call by reference)方式调用函数g(a),则函数f的返回值为( )。


    A.14
    B.18
    C.24
    D.28

    答案:D
    解析:
    代入可知m=2*5;x=10-1;return x+m=1919+9=28

  • 第23题:

    已知函数f1、f2的定义如下,调用f1时为传值调用,调用f2时为引用调用。设有函数调用t=f1(5),那么调用执行后t的值为( )。

    A.1
    B.5
    C.6
    D.7

    答案:A
    解析:
    本题考查程序语言基本知识。
    首先a=f2(x)=f2(1),代入到f2中进行运算,x的值为0,返回值为1。这里x是引用调用,所以x的终值为0,然后返回值赋给了a。所以a=1。最终t的值为a+x=1。选择A。