itgle.com

在函数调用中,引用调用方式将(请作答此空)。下面所定义的函数foo为值调用方式,函数g( )的第一个参数采用值调用、第二个参数采用引用调用方式传递数据。若有表达式y=foo(2),则foo调用执行之后,y被赋值为( )。 A.实参的值传给形参 B.形参的值传给实参 C.实参的地址传给形参 D.形参的地址传给实参

题目
在函数调用中,引用调用方式将(请作答此空)。下面所定义的函数foo为值调用方式,函数g( )的第一个参数采用值调用、第二个参数采用引用调用方式传递数据。若有表达式y=foo(2),则foo调用执行之后,y被赋值为( )。

A.实参的值传给形参
B.形参的值传给实参
C.实参的地址传给形参
D.形参的地址传给实参

相似考题
更多“在函数调用中,引用调用方式将(请作答此空)。下面所定义的函数foo为值调用方式,函数g( )的第一个参数采用值调用、第二个参数采用引用调用方式传递数据。若有表达式y=foo(2),则foo调用执行之后,y被赋值为( )。 ”相关问题
  • 第1题:

    在下面的程序中,若调用f1(x)时,参数传递采用传值方式,调用f2(y)时,参数传递采用引用方式,则输出结果为(47);若调用f1(x)时,参数传递采用引用方式,调用f2(y)时,参数传递采用传值方式,则输出结果为(48)。

    A.2

    B.4

    C.6

    D.8


    正确答案:A
    解析:在过程(或函数)首部声明的参数称为形式参数,简称形参;过程(或函数)调用时的参数称为实际参数,简称实参。调用语句实现了对过程(或函数)体的执行,调用时首先要进行实参与形参间的参数传递。简单地说,以传值方式进行参数传递时,需要先计算出实参的值并将其传递给对应的形参,然后执行所调用的过程(或函数),在过程(或函数)执行时对形参的修改不影响实参的值。若参数传递采用引用方式,则调用时首先计算实际参数的地址,并将此地址传递给被调用的过程,因此对应的形参既得到了实参的值又得到了实参的地址,然后执行被调用的过程(或函数)。在过程(或函数)的执行过程中,针对形式参数的修改将反映在对应的实际参数变量中。题目中若调用f1(x)时,参数传递采用传值方式,则主过程中实际参数a的值不会被改变,所以输出结果为2。若调用f1(x)时,参数传递采用引用方式,调用翅f2(y)时,参数传递采用传值方式,则在函数f1中调用f2不会改变f1中x的值,而在f1中对x的修改就会反映在主过程main的实参a中,因此输出结果为4。

  • 第2题:

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

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


    正确答案:C,D

  • 第3题:

    已知函数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。

  • 第4题:

    在函数调用中,值调用方式将(请作答此空),下面所定义的函数foo为值调用方式,函数g的第一个参数采用值调用,第二个参数采用引用调用方式传递数据。若有表达式y=foo(2),则foo调用执行之后,y被赋值为()。

    A.实参的值传给形参。
    B.形参的值传给实参。
    C.实参的地址传给形参。
    D.形参的地址传给实参。

    答案:A
    解析:
    传值调用:形参取的是实参的值,形参的改变不会导致实参的值发生改变。引用(传址)调用:形参取的是实参的地址,即相当于实参存储单元的地址引用,因此其值的改变同时就改变了实参的值。函数g中的b最终值为3,X为5,因此返回的结果是7。

  • 第5题:

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

  • 第6题:

    调用函数时若是引用调用方式,则是将(请作答此空)。下面所定义的函数f1为值调用方式,函数f2为引用调用方式。若有表达式x=f1(5),则函数调用执行完成后,该表达式中x获得的值为( )。

    A.实参的值传给形参
    B.形参的值传给实参
    C.实参的地址传给形参
    D.形参的地址传给实参

    答案:C
    解析:
    第32题。值调用:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参数的值。引用调用:也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。第33题。结果为b*x=(2*4+1)*5=45

  • 第7题:

    在函数调用中,值调用方式将( ),下面所定义的函数foo为值调用方式,函数g的第一个参数采用值调用,第二个参数采用引用调用方式传递数据。若有表达式y=foo(2),则foo调用执行之后,y被赋值为(请作答此空)。

    A.8
    B.7
    C.5
    D.3

    答案:B
    解析:
    判断一个字符串能否被指定的自动机识别,就是在该自动机的状态图中能否找到从开始状态到达终止状态的路径,且路径上的字符串等于需要识别的字符串。

  • 第8题:

    在函数调用中,引用调用方式将( )。下面所定义的函数foo为值调用方式,函数g( )的第一个参数采用值调用、第二个参数采用引用调用方式传递数据。若有表达式y=foo(2),则foo调用执行之后,y被赋值为(请作答此空)。


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

    答案:C
    解析:
    传值调用:形参取的是实参的值,形参的改变不会导致调用点所传的实参的值发生改变。引用(传址)调用:形参取的是实参的地址,即相当于实参存储单元的地址引用,因此其值的改变同时就改变了实参的值。在本题中,首先在foo()函数中,传入给x的值为2,然后b的值为1,接下来调用g()函数,x的值为2,所以g()函数b的值为2(值传递),b的值为1,所以g()函数x的值为1(地址传递,故x的值变化,会引起foo()函数中b值的变化)。经过g()函数的一系列语句,b=3,x=5。则foo()中b值变成5,最终foo()函数的返回值为5+2=7。

  • 第9题:

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

    2、______

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

    答案:D
    解析:
    传值调用:形参取的是实参的值,形参的改变不会导致调用点所传的实参的值发生改变。引用(传址)调用:形参取的是实参的地址,即相当于实参存储单元的地址引用,因此其值的改变同时就改变了实参的值。本题中,a=x>>1,x值为5,则 a=2;采用传值调用时,由于 g(a)对数据x的运算不会影响原来x的值,所以a+x=5+2=7;采用引用调用时,由于 g(a)对数据x的运算会影响原来x的值,当执行g(a)后x的值为6,所以a+x=5+6=11 。

  • 第10题:

    调用函数时若是引用调用方式,则是将(请作答此空)。下面所定义的函数f1为值调用方式,函数f2为引用调用方式。若有表达式x=f1(5),则函数调用执行完成后,函数f1最终获得的值为( )。

    A.实参的值传给形参
    B.形参的值传给实参
    C.实参的地址传给形参
    D.形参的地址传给实参

    答案:C
    解析:
    传址调用(引用调用) : 将实参地址给形参
    由于f1采用传值调用, X值不发生变化X=5 ; f2采用传址调用,会对B的值产生影响,当执行b=x-1后b=4 ;当执行f2中2*x+1后, b=9 ;所以最后b*x= 5*9=45

  • 第11题:

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

    A.6
    B.7
    C.8
    D.9

    答案:A
    解析:
    传值调用:形参取的是实参的值,形参的改变不会导致调用点所传的实参的值发生改变。引用(传址)调用:形参取的是实参的地址,即相当于实参存储单元的地址引用,因此其值的改变同时就改变了实参的值。本题的第一问:采用的是引用调用方式执行,x=3,a=2,G(a)中y=y*y-1=3,即a这时的值被修改为3,最后a*x=3*3=9 ;本题的第二问:采用的是传值调用方式执行,x=3,a=2;G(a)中y=y*y-1=3,即a这时的值仍然为2,最后a*x=2*3=6;

  • 第12题:

    函数f( )、g( )的定义如下所示。已知调用f时传递给其形参x的值是1,若以传值方式调用g,则函数f的返回值为(请作答此空);若以传引用方式调用g,则函数f的返回值为( )。

    A.3
    B.4
    C.6
    D.7

    答案:A
    解析:
    本题考查程序设计基础知识。
    在传值调用方式下,将实参的值传递给形参,分配给实参变量和形参变量的存储单元之间无相关性,各自使用,互不干扰。在引用调用方式下,实参变量和形参变量的对应的存储单元是同一个,在被调用函数中修改形参实质上就修改了实参变量的值。
    对于本题,在传值方式下,函数f的参数x、局部变量a和函数g的参数Y分别对应不同的存储单元,如下图所示:



    因此,以传值方式调用g,函数f执行结束时,返回值为3。

  • 第13题:

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

  • 第14题:

    已知C++中一个函数的原型为void f(int &x, int &y),调用这个函数时,要把实在参数传递给形式参数,应该采用的参数传递方式是(30)。

    A.传值调用

    B.引用调用

    C.复制恢复

    D.传名调用


    正确答案:B
    解析:C通过传值方式将实参传递给形参。传值调用是指把实在参数的值传递给相应的形式参数,子程序不能通过这种方式传回任何结果。C++中增加引用调用这种参数传递方式,引用调用是指把实在参数的地址传递给相应的形式参数,此时子程序对形式参数的一次引用或赋值都是对形式参数的间接访问,实际上是对实在参数的一次引用或赋值。如果C++中一个函数的原型为voidf(int&x,int&y),表示调用这个函数时,应该采用引用调用这种参数传递方式。在FORTRAN类的语言中有复制恢复这种参数传递方式,在ALGOL语言中有传名调用这种参数传递方式。

  • 第15题:

    已知函数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。

  • 第16题:

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

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

    答案:C
    解析:
    传值调用:形参取的是实参的值,形参的改变不会导致调用点所传的实参的值发生改变。引用(传址)调用:形参取的是实参的地址,即相当于实参存储单元的地址引用,因此其值的改变同时就改变了实参的值。本题中,a=x>>1,x值为5,则 a=2;采用传值调用时,由于 g(a)对数据x的运算不会影响原来x的值,所以a+x=5+2=7;采用传值调用时,由于 g(a)对数据x的运算会影响原来x的值,当执行g(a)后x的值为6,所以a+x=5+6=11 。

  • 第17题:

    函数f30、g30的定义如下所示,已知调用f时传递给其形参x的值是10。若在f中以传值方式调用g,则函数f的返回值为(请作答此空);若以引用方式调用g,则函数f的返回值为( )。

    A.10
    B.15
    C.25
    D.30

    答案:C
    解析:
    本题考查程序语言基础知识。
    若实现函数调用时,将实参的值传递给对应的形参,则称为是传值调用。这种方式下形式参数不能向实参传递信息。引用调用的本质是将实参的地址传给形参,函数中对形参的访问和修改实际上就是针对相应实际参数变量所作的访问和改变。
    根据题目说明,当调用函数f时,形参x首先得到10,接下来以传值方式调用函数g,也就是将f中x的值传给g的参数x。在这种情况下,系统为f中的x与g中的x分别分配存储单元。执行g中的"x=x+5"运算后,g中x的值变为15,返回值15存入f的变量y(即y的值变为10),而f中x的值没有变,因此函数f的返回值为25(x=10,y=15)。
    在引用方式调用g时,g中对其形参x的修改可视为是对调用g时实参的修改,因此调用g之后,f中的y得到返回值15,f中的x也被修改为15,所以f的返回值为30。

  • 第18题:

    调用函数时若是引用调用方式,则是将( )。下面所定义的函数f1为值调用方式,函数f2为引用调用方式。若有表达式x=f1(5),则函数调用执行完成后,该表达式中x获得的值为(请作答此空)。

    A.5
    B.20
    C.36
    D.45

    答案:D
    解析:
    第32题。值调用:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参数的值。引用调用:也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。第33题。结果为b*x=(2*4+1)*5=45

  • 第19题:

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

  • 第20题:

    已知函数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。

  • 第21题:

    调用函数时若是引用调用方式,则是将( )。下面所定义的函数f1为值调用方式,函数f2为引用调用方式。若有表达式x=f1(5),则函数调用执行完成后,函数f1最终获得的值为(请作答此空)。

    A.5
    B.20
    C.36
    D.45

    答案:D
    解析:
    传址调用(引用调用) : 将实参地址给形参
    由于f1采用传值调用, X值不发生变化X=5 ; f2采用传址调用,会对B的值产生影响,当执行b=x-1后b=4 ;当执行f2中2*x+1后, b=9 ;所以最后b*x= 5*9=45

  • 第22题:

    已知函数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
    解析:
    传值调用:形参取的是实参的值,形参的改变不会导致调用点所传的实参的值发生改变。引用(传址)调用:形参取的是实参的地址,即相当于实参存储单元的地址引用,因此其值的改变同时就改变了实参的值。本题中,a=x>>1,x值为5,则 a=2;采用传值调用时,由于 g(a)对数据x的运算不会影响原来x的值,所以a+x=5+2=7;采用引用调用时,由于 g(a)对数据x的运算会影响原来x的值,当执行g(a)后x的值为6,所以a+x=5+6=11 。

  • 第23题:

    函数f、g的定义如下,执行表达式y=f(2)的运算时,函数调用g(la)分别采用引用调用方式和调用方式和值调用方式,则该表达式求值结束后,y的值分别为( )


    A.9.6
    B.20.6
    C.20.9
    D.30.9

    答案:B
    解析:
    y=f(2) x=2; la=x+1=3;引用调用g(int x)x=3; 3*3+1=10;由于是引用调用,结果会影响la的值,la=10; 10*2=20Y=f(2) x=2; la=x+1=3;传值调用g(int x)x=3; 3*3+1=10;由于是传值调用,结果不影响la的值, la=3; 3*2=6