河北工业大学-C++实验报告实验五(共10页).doc
精选优质文档-倾情为你奉上1、已知下列主函数:int main() cout<<min(10,5,3)<<endl; cout<<min(10.2,5.6,3.8)<<endl; cout<<min('a','b','c')<<endl; return 0;声明求3个数中最小者的函数模板,并写出调用此函数模板的完整程序。#include<iostream>using namespace std;template <typename T>T min(T a,T b,T c)T min;if(a<=b)min=a;elsemin=b;if(min>=c)min=c;return min;int main() cout<<min(10,5,3)<<endl;cout<<min(10.2,5.6,3.8)<<endl;cout<<min('a','b','c')<<endl;return 0;2、编写一个求任意类型数组中最大元素和最小元素的程序,要求将求最大元素和最小元素的函数设计成函数模板,并写出调用此函数模板的完整程序,使得函数调用时,数组的类型可以是整型也可以是双精度类型。#include<iostream>using namespace std;template<class T>void GetMaxMin(T *a, int theSize) T tmpMax = a0; T tmpMin = a0; for (int i = 0; i < theSize; +i) if (ai > tmpMax) tmpMax = ai; if (ai < tmpMin) tmpMin = ai; cout<<"maxelem is "<<tmpMax<<endl; cout<<"minelem is "<<tmpMin<<endl;int c=1,2,3;double b=1.1,2.2,3.3;char d='a','b','c'void main()GetMaxMin(c,3);GetMaxMin(b,3);GetMaxMin(d,3);3、 编写一个函数模板,使用冒泡排序将数组内容由小到大排列并打印出来,并写出调用此函数模板的完整程序,使得函数调用时,数组的类型可以是整型也可以是双精度型。#include<iostream>using namespace std;template<typename t>class paixut* set;int n;public:paixu(t* data,int m):set(data),n(m)void sort();template<typename t>void paixu<t>:sort()t temp;for(int i=0;i<n;i+)for(int j=0;j<n-1;j+)if(setj>setj+1) temp=setj;setj=setj+1;setj+1=temp;for(int j=0;j<n;j+)cout<<setj<<" "cout<<endl;int main()int a=1,3,2,7,5,9;double b=6.6,9.9,7.7,8.8,4.4,2.2;paixu<int>p1(a,6);p1.sort();paixu<double> p2(b,6);p2.sort();char c='a','c','r','b'paixu<char>p3(c,4);p3.sort();return 0;4、编写一个程序,使用类模板对数组元素进行排序、倒置、查找和求和。【提示】设计一个类模板template<class Type>class Array ;具有对数组元素进行排序、倒置、查找和求和功能,然后产生类型实参分别是int型和double型的两个模板类,分别对整型数组与双精度数组完成所要求的操作。#include<iostream.h> #include<iomanip.h> template <class T> class Array T *set; int n; public: Array(T *data,int i)set=data;n=i; Array() void sort(); / 排序 int seek(T key); / 查找指定的元素 T sum(); / 求和 void disp(); / 显示所有的元素 ; template<class T> void Array<T>:sort() int i,j; T temp; for(i=1;i<n;i+) for(j=n-1;j>=i;j-) if(setj-1>setj) temp=setj-1;setj-1=setj;setj=temp; template <class T> int Array<T>:seek(T key) int i; for(i=0;i<n;i+) if(seti=key) return i; return -1; template<class T> T Array<T>:sum() T s=0;int i; for(i=0;i<n;i+) s+=set; return s; template<class T> void Array<T>:disp() int i; for(i=0;i<n;i+) cout<<seti<<" " cout<<endl; 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<int>arr1(a,9); Array<double>arr2(b,6); cout<< "arr1:"<<endl; cout<< "原序列:" arr1.disp(); cout<< "8在arr1中的位置:"<<arr1.seek(8)<<endl; arr1.sort(); cout<< "排序后:" arr1.disp(); cout<<"arr2:"<<endl; cout<< "原序列:" arr2.disp(); cout<< "8.4在arr2中的位置:"<<arr2.seek(8.4)<<endl; arr2.sort(); cout<< "排序后:" arr2.disp(); 5、编写一个程序,求输入数的平方根。设置异常处理,对输入负数的情况给出提示。#include <iostream>#include <cmath>using namespace std;void main() double number; cout<<"请输入一个数: " cin>>number; try if(number<0) throw number; cout << "平方根是" <<sqrt(number)<<endl; catch(double)cout<<"输入数为负数,错误!"<<endl;专心-专注-专业