C++模板题

5544、

題目內容:

P232 例8.3

定义函数模板求未知类型一维数组的最大值。

主函数将函数模板实例化求出 int int_array[]={11,22,33,44,55,66,77,88,99,1010};
double double_array[]={11.1,22.2,33.3,44.4,55.5,66.6,77.7,88.8,99.9,100.10};两个数组的最大值并输出。

输入输出说明:

输出:
The int_max is 1010
The double_max is 100.1
#include<iostream>
#include<cmath>
using namespace std;
template <class T>T getmax(T a[]){
    for(int i=0;i<10;i++){   
        if(a[0]<a[i]){
            a[0]=a[i];
        }
    }
    return a[0];
}
int main(){
    int int_array[]={11,22,33,44,55,66,77,88,99,1010};
    double double_array[]={11.1,22.2,33.3,44.4,55.5,66.6,77.7,88.8,99.9,100.10};
    cout<<"The int_max is "<<getmax(int_array)<<endl;
    cout<< "The double_max is "<<getmax(double_array)<<endl;
}

5545、

題目內容:

P232 例8.4

 定义带有两个参数的函数模板,实现这两个不同类型数据的输出

输入输出说明:

输出:
99 zhang
123.45 888
#include<iostream>
using namespace std;
template <class T1, class T2>void  output(T1 a,T2 b){
    cout<<a<<" "<<b<<endl;
}
int main(){
    output(99,"zhang");
    output(123.45,888);
}

扫描二维码关注公众号,回复: 14144890 查看本文章

5546、

題目內容:

P236 例8.8

定义含有三个相同类型私有数据成员的类模板,类模版中有成员函数实现三个数据的求和运算。此成员函数要求在类外进行定义。

定义模板类对象求两组数据的和。分别为(3,5,7)和(12.34,34.56,56.78)。

输入输出说明:

输出:
The three_int sum is 15
The three_double sum is 103.68

 

#include<iostream>
using namespace std;
template <class T>
class sum{
private:
    T a,b,c;
public:
    sum(T a,T b,T c){
        this->a=a;
        this->b=b;
        this->c=c;
    }
    T getsum();
};
template<class T>
T sum<T>::getsum(){
    return this->a+this->b+this->c;
}
int main(){
    int intsum=0;
    double doublesum=0;
    sum<int> s1(3,5,7);
    intsum=s1.getsum();
    cout<<"The three_int sum is "<<intsum<<endl;
    sum<double> s2(12.34,34.56,56.78);
    doublesum=s2.getsum();
    cout<<"The three_double sum is "<<doublesum<<endl;
}

5536、

題目內容:

写一个函数模板,求数组中的最大元素,并且使得函数调用时,数组的类型和返回类型可以是整数也可以是双精度类型。

输入输出说明:

主函数中定义2个一维数组,一个为整型的,初值为2,4,7,1,9,4,2,6,3,1
另一个为双精度浮点类型的,初值为2.2,4.4,7.8,1.4,9.9,4.6,2.3,6.6,3.1,1.3
int max= 9
double max= 9.9
#include<iostream>
#include<cmath>
using namespace std;
template <class T>T getmax(T a[]){
    for(int i=0;i<10;i++){   
        if(a[0]<a[i]){
            a[0]=a[i];
        }
    }
    return a[0];
}
int main(){
    int int_array[]={2,4,7,1,9,4,2,6,3,1};
    double double_array[]={2.2,4.4,7.8,1.4,9.9,4.6,2.3,6.6,3.1,1.3};
    cout<<"int max= "<<getmax(int_array)<<endl;
    cout<<"double max= "<<getmax(double_array)<<endl;
}

5537、

題目內容:

 写一个函数模板,使用冒泡排序将数组内容由小到大排列,并且使得函数调用时,数组的类型可以是整数也可以是双精度型。

输入输出说明:

整型一维数组的初值为2,4,7,10,9,5,8,6,3,1
双精度浮点类型数组的初值为2.2,4.4,7.8,1.4,9.9,4.6,2.3,6.6,3.1,1.3
输出:
1 2 3 4 5 6 7 8 9 10
1.3 1.4 2.2 2.3 3.1 4.4 4.6 6.6 7.8 9.9

 

#include<iostream>
using namespace std;
template<class T> void sort(T a[]){
    for(int i=0;i<10;i++){
        for(int j=0;j<9;j++){
            if(a[j]>a[j+1]){
                T t=0;
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
        }
    }
    for(int i=0;i<10;i++){
        cout<<a[i]<<" ";
    }
    cout<<endl;
}
int main(){
    int a[]={2,4,7,10,9,5,8,6,3,1};
    double b[]={2.2,4.4,7.8,1.4,9.9,4.6,2.3,6.6,3.1,1.3};
    sort(a);
    sort(b);
}

5538、

題目內容:

  建立类模板input,在调用构造函数时,完成以下工作:

(1)  提示用户输入;

(2)  让用户输入数据;

(3)  如果数据不在预定范围内,重新提示输入。

input型的对象应当按以下形式定义:

input ob("promput message”,min_value,max_value)

其中,promput message是提示输入信息。可接受的最小值和最大值分别由min_value与max_value指定。

输入输出说明:

如果数据在给定的范围之内,则正确输出数据,否则提示重新输入
输入:
1 9 3
a z f
输出:
3
f

 

#include<iostream>
using namespace std;
template <class T>
class input{
    T min_value,max_value;

public:
    input(T min_value,T max_value){

        this->max_value=max_value;
        this->min_value=min_value;
    }
    void output(T a){
        if(min_value<=a&&a<=max_value){
            cout<<a<<endl;
        }
        else{
            cout<<"数据不符合范围,请重新输入。";
        }
    }
};
int main(){ 
    int x,y,z;
    cin>>x>>y>>z;
    input< int> in1(x,y);
    in1.output(z);
    char a,b,c;
    cin>>a>>b>>c;
    input < char> in2(a,b);
    in2.output(c);

}

猜你喜欢

转载自blog.csdn.net/qq_56350439/article/details/124476013