gehongxiang
计算机等级考试二级C++习题与解析:模板
01.分析以下程序的执行结果 #include
return (x>y?x:y); }
void main() {
cout< 本题说明函数模板的使用方法。max()函数是一个函数模板,它返回两个参数中的较大者。在调用时自动联编相应的max()函数。所以输出为:5,3.5 注意:T为类型形式参数,可包含基本数据类型,也可以包含类类型,不能是普通的数据变量。 02.分析以下程序的执行结果 #include Sample(T i){n=i;} void operator++(); void disp(){cout<<\}; template void Sample n+=1; // 不能用n++;因为double型不能用++ } void main() { Sample 本题说明类模板的使用方法。Sample是一个类模板,由它产生模板类Sample gehongxiang 初值,通过重载++运算符使n增1,这里n由’a’增1变成’b’。 所以输出为:n=b 03.编写一个对具有n 个元素的数组x[]求最大值的程序,要求将求最大值的函数设计成函数模板。 解: 将max()函数设计成一个函数模板。 本题程序如下: #include void main() { int a[]={4,5,2,8,9,3}; double b[]={3.5,6.7,2,5.2,9.2}; cout<<\数组最大值:\cout<<\数组最大值:\} 本程序的执行结果如下: a 数组最大值:9 b 数组最大值:9.2 04.编写一个使用类模板对数组进行排序、查找和求元素和的程序。 解: 设计一个类模板template Array(T *data,int i){set=data;n=i;} gehongxiang ~Array(){} void sort(); // 排序 int seek(T key); // 查找指定的元素 T sum(); // 求和 void disp(); // 显示所有的元素 }; template for(i=1;i temp=set[j-1];set[j-1]=set[j];set[j]=temp; } } template for(i=0;i template T s=0;int i; for(i=0;i template for(i=0;i gehongxiang void main() { int a[]={6,3,8,1,9,4,7,5,2}; double b[]={2.3,6.1,1.5,8.4,6.7,3.8}; Array cout<<\原序列:\ cout<<\在arr1中的位置:\arr1.sort(); cout<<\排序后:\cout<<\ cout<<\原序列:\ cout<<\在arr2中的位置:\arr2.sort(); cout<<\排序后:\} 本程序的执行结果如下: arr1: 原序列:6 3 8 1 9 4 7 5 2 8在arr1中的位置:2 排序后:1 2 3 4 5 6 7 8 9 arr2: 原序列:2.3 6.1 1.5 8.4 6.7 3.8 8.4在arr2中的位置:3 排序后:1.5 2.3 3.8 6.1 6.7 8.4 题1.分析以下程序的执行结果 #include return (x>0?x:-x); } void main() { cout< abs()是一个函数模板,它返回参数的绝对值。在调用时自动联编相应的abs()函数。 所以输出为:3,2.6 題2.分析以下程序的执行结果 #include gehongxiang template Sample(T i){n=i;} Sample template Sample static Sample void main() { Sample Sample为一个类模板,产生一个模板类Sample 题3.编写一个函数模板,它返回两个值中的较小者,同时要求能正确处理字符串。 解: 这里设计一个函数模板template return (a char *min(char *a,char *b) { return (strcmp(a,b)<0?a:b);