计算机二级

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

题目

有如下函数定义: 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

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

有如下函数模板定义:templateT func(T x, T y){return x*x+y*y;}在下列对func的调用中,

有如下函数模板定义: template<class T> T func(T x, T y){return x*x+y*y;} 在下列对func的调用中,错误的是( )。

A.func(3,5);

B.func(3.0,5.5);

C.func(3,5.5)

D.func<int>(3,5.5);


正确答案:C

第2题:

有如下函数模板定义:template T func (Tx, Ty){ return x*x+ y*y;}在下列对func 的调用

有如下函数模板定义:template <class T>T func (Tx, Ty){ return x*x+ y*y;}在下列对func 的调用中,错误的是( )。

A.func(3,5);

B.func(3.0,5.5);

C.func(3,5.5);

D.func<int>(3,5.5);


正确答案:C

第3题:

有如下函数模板的定义: template T func(Tx,Ty){ return x*x+y*y;}A.func(3,5);B.func

有如下函数模板的定义: template <class T> T func(Tx,Ty){ return x*x+y*y;}

A.func(3,5);

B.func<>(3,5);

C.func(3,5.5);

D.func<int> (3,5.5);


正确答案:C
解析:本题考核函数模板的使用。对于C选项,编译系统从3获得的信息是“T对应于int”,从5.5处获得的信息是“T对应于double”,二者相互矛盾,在编译时会产生错误。对于D选项中紧跟在函数名后的int>就是模板实参表,通过它通知编译系统在调用过程中,double型的参数5.5将被自动换成int型。

第4题:

有如下函数模板的定义:templateT func(T x,T y){return x*x+y*y;}在下列对func()的调用

有如下函数模板的定义: template<class T> T func(T x,T y){return x*x+y*y;} 在下列对func()的调用中,不正确的是( )。

A.func(3,5);

B.func<>(3,5);

C.func(3,5.5);

D.func<int>(3,5.5);


正确答案:C
解析:对于选项C,编译系统从3获得的信息是“T对应于int”,从5.5处获得的信息是“T对应于double”,二者相互矛盾,在编译时会产生错误。对于选项D中紧跟在函数名后的int>就是模板实参表,通过它通知编译系统在调用过程中,double型的参数5.5将被自动换成血型。

第5题:

有如下函数定义: 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。

第6题:

有如下函数模板定义:template T func(T x, T y){return x*x*y*y;)在下列对func的调用中

有如下函数模板定义: template <class T> T func(T x, T y){return x*x*y*y;) 在下列对func的调用中,错误的是

A.func(3,5);

B.func(3.0,5.5);

C.func(3,5.5);

D.func<int>(3,5.5);


正确答案:C
解析:本题考核函数模板的使用。引用模板函数和引用一般的函数在语法形式上没有任何区别。所有的类型替换都是编译器在幕后悄悄进行的,但是要注意的是说明一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确认是否匹配函数模板中对应的形参。例如,本题中的C)选项,编译系统从第一个参数“3”获得的信息是“T对应于int”,而从第二个参数“5.5”处获得的信息是“T对应于double”,二者相互矛盾,在编译时会产生错误。对于D)选项中紧跟在函数名后的int>就是模板实参表,通过它通知编译系统在调用过程中,double型的参数“5.5”将被自动换成int型。

第7题:

有如下函数模板定义: template T func(Tx,Ty){return x*x+y*y;} 在下列对func

有如下函数模板定义: template<class t> T func(Tx,Ty){return x*x+y*y;} 在下列对func的调用中,错误的是

A.func(3,5);

B.func(3.0,5.5);

C.func(3,5.5);

D.func<int>(3,5.5)


正确答案:C
解析:模板类型参数歧义。

第8题:

有如下函数定义;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。

第9题:

( 21 )有如下函数定义:

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