下列程序将x、y和z按从小到大的顺序排列,请将下面的函数模板补充完整。 template void fu下列程序将x、y和z按从小到大的顺序排列,请将下面的函数模板补充完整。 template<class T> void fun (______) { T a; if(x>y) { a=x; x=y;y=a; } if(y>z) { a=y; y=z;z=a; } if(x>y) { a=x; x=y;y=a; } }A.T x,T y,T zB.T x;y;zC.T &x,T &y,T &zD.T &x,

题目
下列程序将x、y和z按从小到大的顺序排列,请将下面的函数模板补充完整。 template void fu

下列程序将x、y和z按从小到大的顺序排列,请将下面的函数模板补充完整。 template<class T> void fun (______) { T a; if(x>y) { a=x; x=y;y=a; } if(y>z) { a=y; y=z;z=a; } if(x>y) { a=x; x=y;y=a; } }

A.T x,T y,T z

B.T x;y;z

C.T &x,T &y,T &z

D.T &x, &y, &z


相似考题
更多“下列程序将x、y和z按从小到大的顺序排列,请将下面的函数模板补充完整。 template<class T> void fu ”相关问题
  • 第1题:

    函数模板:template T add(T x,T y){return x+y;}下列对add函数的调用不正确的是A.add<>

    函数模板:template<class T> T add(T x,T y){return x+y;} 下列对add函数的调用不正确的是

    A.add<>(1,2)

    B.add<int>(1,2)

    C.add(1,0,2)

    D.add(1.0,2.0)


    正确答案:C
    解析:对于templateclassT>Tadd(Tx,Ty){returnx+y;}调用时可以省略模板实参的声明,但是要求x和y的数据类型必须是一样的。

  • 第2题:

    下列函数模板定义中错误的是A.templateB.template Q F(Q x){return Q+x;} Q F

    下列函数模板定义中错误的是

    A.template<class Q>

    B.template<class Q> Q F(Q x){return Q+x;} Q F(Q x){return x+x;}

    C.template<class T>

    D.template<class T> T F(T x){return x * x;} bool F(T x){return x>1;}


    正确答案:A
    解析:在函数模板定义中,类型参数不能参与运算。

  • 第3题:

    类模板templateclass x{…},其中,友元函数f对特定类型T(如int),使函数f(x&=成

    类模板template<class T>class x{…},其中,友元函数f对特定类型T(如int),使函数f(x<int>&=成为x<int>模板类的友元,则其说明为( )。

    A.friend void f();

    B.friend void f(x<T>&=;)

    C.friend void A::f()

    D.friend void C<T>::f(x<T>&=;)


    正确答案:B

  • 第4题:

    函数模板:templateT add(T x, T y) {return x+y;}下列对add函数的调用不正确的是A.add<

    函数模板:template<class T> T add(T x, T y) {return x+y;} 下列对add函数的调用不正确的是

    A.add<>(1,2)

    B.add<int>(1,2)

    C.add(1.0,2)

    D.add(1.0,2.0)


    正确答案:C
    解析:对于templateclass T>
      T add (T x, T y) {return x+y;}
      调用时可以省略模板实参的声明,但是要求x和y的数据类型必须是一样的。

  • 第5题:

    有如下函数模板的定义:template Tfunc(Tx,Ty){returnx*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将被自动换成int型。

  • 第6题:

    以下程序的运行结果是______。 include include template class TA

    以下程序的运行结果是______。

    include<iostream.h>

    include<math.h>

    template<class T>

    class TAdd//定义类模板TAdd,T为类型

    {

    Tx,y;

    public:

    TAdd (Ta,Tb) {x=a,y=b;) //构造函数

    Tadd() { retum x+y;}//成员函数

    };

    void main( )

    {

    TAdd<int>A (5,6);


    正确答案:s1=11 s2=8.2
    s1=11 s2=8.2

  • 第7题:

    将下面程序补充完整。 include using namespace std; class Base{ public: 【 】fun(){r

    将下面程序补充完整。

    include <iostream>

    using namespace std;

    class Base{

    public:

    【 】 fun(){return 0;} //声明虚函数

    };

    class Derived:public Base{

    public:

    x,y;

    void SetVal(int a,int b){}

    int fun(){return x+y;}

    };

    void 【 】 SetVal(int a,int b){x=a;y=b;} //类Derived成员函数

    void main(){

    Derived d;

    cout<<d.fun()<<endl;

    }


    正确答案:virtual int Derived::
    virtual int Derived:: 解析:virtual int用于声明虚函数;Derived::用于指定类Derived成员函数。

  • 第8题:

    阅读下面程序:include template class TAdd{private:T x, y;public:TAdd(T

    阅读下面程序:

    include <iostream.h>

    template <class T>

    class TAdd

    {

    private:

    T x, y;

    public:

    TAdd(T a, T b)

    {

    x=a;

    y=b;

    }

    T add()

    {

    return x +y;

    }

    };

    void main( )

    {

    TAdd<int>a(5,6);

    TAdd<double>b(2.4,5.8);

    cout<<"s1 ="<<A. add()<<",";

    cout<<"s2="<<B, add()<<end1;

    }

    写出该程序的运行结果:【 】。


    正确答案:s1=11s2=8.2
    s1=11,s2=8.2

  • 第9题:

    下面程序的输出结果是()。includeusing namespace std;templateT max(T x,T

    下面程序的输出结果是( )。 #include<iostream> using namespace std; template<class T> T max(T x,T y) { return(x>= y ? x:y);} template<class T> T max(T x,T y,T z) { T t; t=(x>=y ? x:y); return(t>=z ? t:z); } void main(){ int x = 10,y=18,maxi; float a = 1.2,b = 3.2,c = 2,max2; max1 = max(x,(int)c); max2 = max(a,b,(float)y); cout<<maxi<<endl; cout<<max2<<endl;

    A.18 3.2

    B.10 18

    C.10 3.2

    D.编译出错


    正确答案:B
    解析:本道题考查函数模板以及函数模板重载的使用,max1=max(x,(int)c)语句会实例化Tmax(Tx,Ty)函数模板,返回两个int数据中的最大值;max2=max(a,b,(float)y);语句会实例化Tmax(Tx,Ty,T2)函数模板,返回3个float数据中的最大值。

  • 第10题:

    下列程序将x、y和z按从小到大的顺序排列,横线处应添加语句()。templatevoid fun (______)

    下列程序将x、y和z按从小到大的顺序排列,横线处应添加语句( )。 template<class T> void fun (______) { T a; if(x>y) { a=x;x=y;y=a; } if(y>z) { a=y;y=z;z=a; } if(x>y) { a=x;x=y;y=a; } }

    A.Tx,Ty,Tz

    B.Tx;y;z

    C.T&x,T&y,T&z

    D.T&x,&y,&z


    正确答案:C
    解析:函数fun的类型为void没有任何返回值,函数中变量的改变,即参数的改变应该影响实参。应该是地址传递方式,即把引用型作为函数形参。类T是类的抽象,可以利用模板建立各种数据类型的类。所以补全函数的定义为“T &x,T &y,T &z”。

  • 第11题:

    下面的函数模板定义中错误的是______ 。A.template QF (Q x){return Q +x;}B.template<

    下面的函数模板定义中错误的是______ 。

    A.template<class Q > QF (Q x){return Q +x;}

    B.template<class Q > QF (Q x){returnx/x;}

    C.template <class T > T F(T x) {return x*x;}

    D.template <class T> bool F (T x) {return x>1;}


    正确答案:A
    解析:Q只是模板的语法要求,不能作为一个值。

  • 第12题:

    假设有函数模板定义如下:template< typename T >Max(T a,T b,T&c){c=a+b;}下列选项正确的是()

    • A、)int x,y;char z;Max(x,y,z);
    • B、)double x,y,z;Max(x,y,z);
    • C、)int x,y;float z;Max(x,y,z);
    • D、)float x;double y,z;Max(x,y,z);

    正确答案:B

  • 第13题:

    有如下函数模板定义: 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
    解析:模板类型参数歧义。

  • 第14题:

    下列程序将x、y和z按从小到大的顺序排列,请将下面的函数模板补充完整。template void ord

    下列程序将x、y和z按从小到大的顺序排列,请将下面的函数模板补充完整。

    template<class T>

    void order( )

    {

    T al

    if(x>y)

    {

    a=x;x=y; y=a;

    }

    if(y>z)

    {

    a=y;y=Z; z=a;

    }

    if(x>y)

    {

    a=X;X=y; y=a;

    }

    }


    正确答案:T&xT&yT&z。
    T&x,T&y,T&z。 解析: 本题要填入的是函数的形参表,此函数的功能是:x、y和z按从小到大的顺序排列,那么就涉及到改变传入的实参值的情况,因此要采用引用传递的方式。所以本惠空白处应填入,T&x,T&y ,T&z。

  • 第15题:

    下面的函数模板定义中错误的是A.template q F(Q x) {return Q+x;}B.template

    下面的函数模板定义中错误的是

    A.template <class Q> q F(Q x) {return Q+x;}

    B.template <class Q> Q F(Q x){return x+x;}

    C.template <class T> T F(Tx){return x*x;}

    D.template <class T> bool F(Tx){return x>1;}


    正确答案:A
    解析:本题考核函数模板的定义。模板定义的类型参数表>中包含一个或多个由逗号分隔的类型参数项,每一项由关键字class后跟一个用户命名的标识符,此标识符为类型参数,它不是一种数据类型。A) 选项中标识符Q作为类型参数,不能用作数据类型参与"Q+x"的运算。

  • 第16题:

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

  • 第17题:

    已知程序的结果为1 2 3,请填空。 include template class A { public: T X,

    已知程序的结果为1 2 3,请填空。

    include<iostream.h>

    template<class T>

    class A

    {

    public:

    T X, y, z;

    void display( ) {cout < < x < < " " < < y < < " " < < z;}

    };

    void main( )

    {

    A<int>a1;

    _____

    _____

    _____

    a1.display( ) ;

    }


    正确答案:12 a1.x=1; 13 a1.y=2; 14 a1.z=3;
    12 a1.x=1; 13 a1.y=2; 14 a1.z=3; 解析:通过程序的结果知道数据类型是int,所以调用时声明模板实参为int的,再对x、y、z进行赋值。

  • 第18题:

    下列程序将x,y和z按从小到大的顺序排列,请将下面的函数模板补充完整。 template void fu

    下列程序将x,y和z按从小到大的顺序排列,请将下面的函数模板补充完整。 template<class T> void fun(______) { T a; if(x>y) { a=x; x=y;y=a; } if(y>z) { a=y; y=z;z=a; } if(x>y) { a=x; x=y;y=a; } }

    A.T x,T y,T z

    B.T x;y;z

    C.T &x,T &y,T &Z

    D.T &x,&y,&z


    正确答案:C
    解析:函数fun的类型为void没有任何返回值,函数中变量的改变,即参数的改变应该影响实参。应该是地址传递方式,即把引用型作为函数形参。类T是类的抽象,可以利用模板建立各种数据类型的类。所以补全函数的定义为“T &x,T &y,T &z”。

  • 第19题:

    下面的函数模板定义中错误的是()。A.templateB.template QF(Qx){return Q-x;}

    下面的函数模板定义中错误的是( )。

    A.template<class Q>

    B.template<class Q> QF(Qx){return Q-x;} QF(Qx){return x+x;}

    C.template<class T>

    D.template<class T> TF(Tx){return x*x;} boolP(Tx){return X>1;)


    正确答案:A

  • 第20题:

    类模板templateclass x(…),其中,友元函数f成为从该类模板实例化的每个模板类的友元,则

    类模板template<class T>class x(…),其中,友元函数f成为从该类模板实例化的每个模板类的友元,则其说明应为( )。

    A.friend void f();

    B.friend void f(x<T>&)

    C.friend void A::f();

    D.friend void C<T>::f(x<T>&):


    正确答案:A

  • 第21题:

    下列程序将X、Y和Z按从小到大的顺序排列,横线处应添加语句( )。


    正确答案:C

  • 第22题:

    下列关于函数模板的定义中,合法的是()。A.template class T abs(T z) {return z<0 ?-z:z;}B.te

    下列关于函数模板的定义中,合法的是( )。

    A.template class <T>T abs(T z) {return z<0 ?-z:z;}

    B.template<typename T>T abs(T z) {return z<0 ?-z:z;}

    C.template T<class T>abs(T z) {return z<0 ?-z:z;}

    D.template T abs(Tz) {return z<0 ?z:z;}


    正确答案:B
    解析:声明一个函数模板格式是:
      template模板形参表声明>函数声明>
      其中模板形参表声明>是由一个或多个模板形参>组成(如果是多个需要用逗号隔开)。其中,模板形参>可以换成class,函数的声明部分和一般函数的声明部分类似,只有某些类型修饰符被虚拟类型参数替代。

  • 第23题:

    假设有函数模板定义如下,下列各选项中正确的是( )。 Template T Max(T a,T b,T

    假设有函数模板定义如下,下列各选项中正确的是( )。 Template <class T> T Max(T a,T b,T c) { if(a<b) {if(b<c) return c; else return b;} else {if(a<c) return c; else return a;} }

    A.float x,y,z;float max;max=Max(x,y,z);

    B.float x;int y,z;float max;max=Max(x,y,z);

    C.float x;double y,z;float max;max=Max(x,y,z);

    D.三个选项都正确


    正确答案:A
    解析:使用函数模板,要求形参必须为相同类型。

  • 第24题:

    单选题
    下列程序将x、y和z按从小到大的顺序排列,横线处应添加语句(  )。
    A

    Tx,Ty,Tz

    B

    Tx;y;z

    C

    T&x,T&y,T&z

    D

    T&x,&y,&z


    正确答案: C
    解析:
    函数fun的类型为void没有任何返回值,形参需采用地址传递方式,改变实参的值。类T是类的抽象,可以利用模板建立各种数据类型的类。所以补全函数的参数部分应为“T&x,T&y,T&z”。