更多“已知函数定义“voidfun(inta,intb){b++;a++;}”,则执行“intx=2,y=3;fun(x,y);”后,变量x、y的值分别为()。 A.3,4B.3,3C.2,4D.2,3”相关问题
  • 第1题:

    有如下函数定义;void func(int a,int & b){a++;b++;}若执行代码段:int x=0,y=1;func(x,y);则变量x和y的值分别是

    A.0和1

    B.1和1

    C.0和2

    D.1和2


    正确答案:C
    解析:本题考查的知识点是:函数参数的传递方式。C++的默认参数传递方式是传值,即将实参值的副本传递(拷贝)给被调用函数的形参。如果需要传地址,可通过传递指针、引用或数组类型的参数来实现。传值时,对形参的改变不会影响到实参;而传地址,则会同时改变实参。本题中形参a是普通参数,即传值调用,函数中对a增1不会影响到实参x的值;而形参b是引用,即传址调用,函数中对b增1同时也改变了实参y的值(y也增1了)。故最终结果是0和2,应该选择C。

  • 第2题:

    有下列函数定义: int fun(double a,double b) {return a*b;} 若下列选项中所用变量都已经正确定义并赋值,错误的函数调用是( )。

    A.if(fun(x,y)){……}

    B.z=fun(fun(x,y),fun(x,y));

    C.z=fun(fun(X,y)x,y);

    D.fun(x,y);


    正确答案:C
    本题考查函数在函数调用时参数的传递形式,形参与实参参数个数类型要一致。

  • 第3题:

    有如下函数定义: void funC(int a,int&B. {a++;b++;} 若执行代码段: int x=0,Y = 1; funC(X,Y); 则变量x和y的值分别是( )。

    A.0和1

    B.1和1

    C.0和2

    D.1和2


    正确答案:C
    函数参数的3种传递方式:①将变量名作为形参和实参,即传值方式;②传递变量指针;③引用形参本题中实参x为传值方式,所以x的值不会改变;Y为引用形参,所以会改变。故本题答案为c。

  • 第4题:

    若有函数fun(x,y),并且已经使函数指针变量p指向函数fun,则使用p调用函数fun的正确方法是( )。

    A.(*p)fun(x,y);

    B.*pfun(x,y);

    C.(*p)(x,y)

    D.*p(x,y)


    正确答案:C

  • 第5题:

    下列程序的执行结果是( )。

    #include(iostream.h>

    #include<stdlib.h>

    classTestClass

    {

    public:

    intX,y;

    TestClass( ){x=y=0;}

    TestClass(inta,intb){x=a;y=b;}

    voiddisp( )

    {

    cout<<"x="<<x<<",y="<y<<endl;

    }

    };

    voidmain( )

    {

    TestClasss1(2,3);

    s1.disp( );

    }

    A.x=2,y=2

    B.x=2,y=3

    C.x=3,y=2

    D.x=3,y=3


    正确答案:B
    B。【解析】由主函数入手,定义了类TestClass的对象s1(2,3),当类对象进入其作用域时调用构造函数,构造函数应该是调用具有参数的“TestClass(inta,intb){x=a;Y=b;}”,然后调用成员函数disp,则输出为“cout<<"x="<<x<<",y="<<y<<endl;“。即x=2,y=3。

  • 第6题:

    下列函数的运行结果是( )。 #include<iostream.h> intadd(inta,intb); voidmain() { externintX,y; cout<<add(X,y)<<endl; } intx(20),y(5); intadd(inta,intb) { ints=a+b: returns; }

    A.25

    B.30

    C.20

    D.15


    正确答案:A
    A。【解析】由主函数main入手,定义外部变量x和y,调用函数add。因为x,y为外部变量,所以“intx(20),y(5);”的赋值在add也是有效的,即add函数的运算结果为25。

  • 第7题:

    下列程序的执行结果是( )。 #include(iostream.h> #include<stdlib.h> classTestClass { public: intX,y; TestClass( ){x=y=0;} TestClass(inta,intb){x=a;y=b;} voiddisp( ) { cout<<"x="<<x<<",y="<y<<endl; } }; voidmain( ) { TestClasss1(2,3); s1.disp( ); }

    A.x=2,y=2

    B.x=2,y=3

    C.x=3,y=2

    D.x=3,y=3


    正确答案:B
    B。【解析】由主函数入手,定义了类TestClass的对象s1(2,3),当类对象进入其作用域时调用构造函数,构造函数应该是调用具有参数的“TestClass(inta,intb){x=a;Y=b;}”,然后调用成员函数disp,则输出为“cout<<"x="<<x<<",y="<<y<<endl;“。即x=2,y=3。

  • 第8题:

    下列程序的执行结果是( )。 #include<iostream.h> classSample { intx,y; public: Sample(){x=y=0;} Sample(inta,intb){x=a;y=b;} ~Sample() { if(x==y) cout<<"x=y"<<endl; else cout<<"x!=y"<<endl; } voiddisp() { cout<<"x="<<x<<",y="<<y<<endl;} }; voidmain() { Samples1(2,3); s1.disp(); }

    A.x=2,y=2

    B.x=3,y=3

    C.x=2,y=3

    D.x=3,y=2


    正确答案:C
    C。【解析】本题考查类的构造函数和析构函数。首先,Samplesl(2,3);会调用含有两个参数的构造函数Sam-ple(inta,intb){x=a;y=b;),disp函数输出成员变量x和y的值x=2,y=3;然后结束时调用析构函数。因为x和y值不等,故输出X!=Y。

  • 第9题:

    设x、y、z均为int型变量,则执行以下语句后,x、y, z的值为( ) X=1; y=0; Z=2; y++&&++Z ||++ X;

    A.2、l、3

    B.2、0、3

    C.2、l、3

    D.2、1、2


    正确答案:D
    语句序列“x=l;y=0;z=2;y++&&++z||++x;”先使变量x的值为1,变量y的值为0,变量Z的值为2。由逻辑与和逻辑或构成的逻辑表达式的特别计算规则,顺序计算各逻辑子表达式,并当一旦能得到逻辑子表达式的结果时,就立即结束逻辑子表达式的计算,不再计算该逻辑子表达式。计算y++因y的值为0,使y++&&++z的结果为0,立即去计算++X,这次计算使变量y的值变成1,而变量Z的值本改变。接着计算++X,使X的值变为2。所以经上述语句执行后,X、y、Z的值依次为2、1、Z。确解答为D。

  • 第10题:

    若有定义intx=3,y;则执行语句y=(x++)+(x++)+(x++)后,y=()

    • A、9
    • B、12
    • C、15
    • D、18

    正确答案:B

  • 第11题:

    单选题
    有以下程序: #include  int m1(int x,int y) {  return x<=y?x:y; } int m2(int x,int y) {  return x<=y?y:x; } int fun(int a,int b) {  return a+b; } main() {  int x=2,y=3,z=1;  printf(%d,fun(m1(x,y),m2(y,z))); } 程序的运行结果是(  )。
    A

    6

    B

    5

    C

    4

    D

    3


    正确答案: D
    解析:
    条件运算符“?:”语法形式为:exp1?exp2:exp3。执行规则为:计算表达式exp1的值,测试其是否为0;如果exp1的值非0,则对exp2求值,并把这个值作为条件表达式的结果输出,不计算exp3;如果exp1的值为0,则对exp3求值,并把这个值作为条件表达式的结果输出,不计算exp2。函数m1实现返回传入两个参数中的最小值。函数m2实现返回传入两个参数中的最大值。函数fun实现返回传入两个参数之和。程序执行过程为:调用m1(2,3)返回2,调用m2(3,1)返回3,调用fun(2,3)返回5,输出结果5,答案选择B选项。

  • 第12题:

    单选题
    若有定义intx=3,y;则执行语句y=(++x)+(++x)+(++x)后,y=()
    A

    9

    B

    12

    C

    15

    D

    18


    正确答案: D
    解析: 暂无解析

  • 第13题:

    已知:intx=1,y=2,z;则执行z=xy?++x:++y;则z的值为()。

    A.1

    B.2

    C.3

    D.4


    正确答案:C

  • 第14题:

    有下列程序: #include<stdi0.h> voidfun(int*a,int*b) {int*C; c=a;a=b;b=C; } voidmain( ) {intx=3,y=5,*p=&x,*q=&y; fun(p,q);printf("%d,%d,",*P,*q); fun(&x,&y);printf("%d,%d\n",*P,*q) } 程序运行后的输出结果是( )。

    A.3,5,5,3

    B.3,5,3,5

    C.5,3,3,5

    D.5,3,5,3


    正确答案:B
    B。【解析】本题子函数fun(int*a,*b)的功能是交换形参a,b的值。主函数中调用子函数fun(P,q)和fun(&x,&y)后,实参P,q和&x,&y的值之间并没有发生交换,所以程序输出的结果为3,5,3,5。

  • 第15题:

    有下列程序: 、 fun(int X,int y){return(x+y);) main( ) { int a=1,b=2,c=3,sum; sum=fun((a++,b++,a+b),c++); printf("%d\n",sum); } 执行后的输出结果是( )。

    A.6

    B.7

    C.8

    D.9


    正确答案:C
    函数fun(intx,inty)的功能是返回x+Y的值。在主函数中,变量a,b,c的初始值分别为1,2,3。因此逗号表达式“a++,b++,a+b”的值等于5,表达式c++的值为3,调用于函数的表达式为“fun(5,3);”,其返回值等于8。

  • 第16题:

    有如下类声明: classXA{ intx: public: XA(intn){x=n;} }; classXB:publicXA{ inty; oublic: XB(inta,intb); }; 在构造函数XB的下列定义中,正确的是( )。

    A.XB::XB(inta,intb):x(a),y(b){}

    B.XB::XB(inta,intb):XA(a),y(b){}

    C.XB::XB(inta,intb):x(a),XB(b){}

    D.XB::XB(inta,intb):XA(a),XB(b){}


    正确答案:B
    B。【解析】C++中派生类构造函数的一般语法规则为<派生类名>::<派生类名>(<参数表>):<基类1>(<参数表1>),…,<基类名n>(<参数表n>),<子对象l>(<子对象参数表1>,…<子对象m>(<子对象参数表m>){<派生类新增成的初始化语句>;}。

  • 第17题:

    有以下函数定义: int fun(double a,doubleB){return a*b;} 若以下选项中所用变量都已正确定义并赋值,错误的函数调用是( )。

    A.if(fun(x,y)){……}

    B.z=fun(fun(x,y),fun(x,y));

    C.z=fun(fun(x,y)x,y);

    D.fun(x,y);


    正确答案:C

  • 第18题:

    有以下程序: fun(int x,int y){return(x+y);} main() {int a=1,b=2,c=3,Sum; sum=fun((a++,b++,a+b),c++); printf("%d",sum); } 执行后的输出结果是______。

    A.6

    B.7

    C.8

    D.9


    正确答案:C
    解析: 在fun((a++,b++,a+b),c++)函数中先计算括号内的“(a++,b++,a+b)”逗号运算符,整个逗号表达式最后的值为5;接下来调用fun()函数,此时原句变为fun(5,c++)。运算c++表示在使用完c后再将c的值加1,函数的返回值为8。

  • 第19题:

    下列程序的执行结果是( )。 #include<iostream.h> #include<stdlib.h> classTestClass { public: intX,y; TestClass(){x=y=0;} TestClass(inta,intb)(x=a;y=b;}voiddisp() { cout<<"x="<<x<<",y="<<y<<endl; } }; voidmain() { TestClasss1(2,3); s1.disp(); }

    A.x=2,y=2

    B.x=2,y=3

    C.x=3,y=2

    D.x=3,y=3


    正确答案:B
    B。【解析】由主函数入手,定义了类TestClass的对象s1(2,3),当类对象进入其作用域时调用构造函数,构造函数应该是调用具有参数的“TestClass(inta,intb){x=a;y=b;}”,然后调用成员函数disp,则输出为“cout<<"x="<<x<<",y="<<y<<endl;“。即X=2,y=3。

  • 第20题:

    有以下程序: #include(iostream.h) voidfun(inta,intb,intc) {a=456,b=567,C=678;} voidmain( ) { intx=10,y=20,z=30; fun(x,Y,z); cout<<x<<,<<y<<,<<Z<<endl; } 输出结果是( )。

    A.30,20,10

    B.10,20,30

    C.456,567,678

    D.678,567,456


    正确答案:B
    B。【解析】本题考查函数中变量的作用范围,在主函数中给变量x,y,z赋值,然后将其作为实参传递给了函数fun,虽然在函数fun中改变了这3个变量的值,但只是同名的局部变量,不影响函数中变量的值,所以在调用函数fun结束后,主函数3个变量的值未改变。

  • 第21题:

    已知一个函数的定义如下:double fun(int x,double y){⋯⋯}则该函数正确的函数原型声明为()

    • A、double fun(intx,doubley)
    • B、fun(int x,doubley)
    • C、double fun(int,double);
    • D、fun(x,y);

    正确答案:C

  • 第22题:

    若有定义intx=3,y;则执行语句y=(++x)+(++x)+(++x)后,y=()

    • A、9
    • B、12
    • C、15
    • D、18

    正确答案:B

  • 第23题:

    单选题
    有如下函数定义:void func(int a,int&b)a++;b++;若执行代码段:int x=0;y=1;func(x,y);则变量x和y的值分别是(  )。
    A

    0和1

    B

    1和1

    C

    0和2

    D

    1和2


    正确答案: D
    解析:
    函数func中形参a采用传值调用,函数func对a加1不会影响实参x的值;形参b是传址调用,函数func对b加1的同时会改变实参y的值。因此,调用函数func后,x=0,y=2。