您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 河北工业大学-C++实验报告实验五
1、已知下列主函数:intmain(){coutmin(10,5,3)endl;coutmin(10.2,5.6,3.8)endl;coutmin('a','b','c')endl;return0;}声明求3个数中最小者的函数模板,并写出调用此函数模板的完整程序。#includeiostreamusingnamespacestd;templatetypenameTTmin(Ta,Tb,Tc){Tmin;if(a=b)min=a;elsemin=b;if(min=c)min=c;returnmin;}intmain(){coutmin(10,5,3)endl;coutmin(10.2,5.6,3.8)endl;coutmin('a','b','c')endl;return0;}2、编写一个求任意类型数组中最大元素和最小元素的程序,要求将求最大元素和最小元素的函数设计成函数模板,并写出调用此函数模板的完整程序,使得函数调用时,数组的类型可以是整型也可以是双精度类型。#includeiostreamusingnamespacestd;templateclassTvoidGetMaxMin(T*a,inttheSize){TtmpMax=a[0];TtmpMin=a[0];for(inti=0;itheSize;++i){if(a[i]tmpMax){tmpMax=a[i];}if(a[i]tmpMin){tmpMin=a[i];}}coutmaxelemistmpMaxendl;coutminelemistmpMinendl;}intc[]={1,2,3};doubleb[]={1.1,2.2,3.3};chard[]={'a','b','c'};voidmain(){GetMaxMin(c,3);GetMaxMin(b,3);GetMaxMin(d,3);}3、编写一个函数模板,使用冒泡排序将数组内容由小到大排列并打印出来,并写出调用此函数模板的完整程序,使得函数调用时,数组的类型可以是整型也可以是双精度型。#includeiostreamusingnamespacestd;templatetypenametclasspaixu{t*set;intn;public:paixu(t*data,intm):set(data),n(m){}voidsort();};templatetypenametvoidpaixut::sort(){ttemp;for(inti=0;in;i++)for(intj=0;jn-1;j++)if(set[j]set[j+1]){temp=set[j];set[j]=set[j+1];set[j+1]=temp;}for(intj=0;jn;j++)coutset[j];coutendl;}intmain(){inta[]={1,3,2,7,5,9};doubleb[]={6.6,9.9,7.7,8.8,4.4,2.2};paixuintp1(a,6);p1.sort();paixudoublep2(b,6);p2.sort();charc[]={'a','c','r','b'};paixucharp3(c,4);p3.sort();return0;}4、编写一个程序,使用类模板对数组元素进行排序、倒置、查找和求和。【提示】设计一个类模板templateclassTypeclassArray{……};具有对数组元素进行排序、倒置、查找和求和功能,然后产生类型实参分别是int型和double型的两个模板类,分别对整型数组与双精度数组完成所要求的操作。#includeiostream.h#includeiomanip.htemplateclassTclassArray{T*set;intn;public:Array(T*data,inti){set=data;n=i;}~Array(){}voidsort();//排序intseek(Tkey);//查找指定的元素Tsum();//求和voiddisp();//显示所有的元素};templateclassTvoidArrayT::sort(){inti,j;Ttemp;for(i=1;in;i++)for(j=n-1;j=i;j--)if(set[j-1]set[j]){temp=set[j-1];set[j-1]=set[j];set[j]=temp;}}templateclassTintArrayT::seek(Tkey){inti;for(i=0;in;i++)if(set[i]==key)returni;return-1;}templateclassTTArrayT::sum(){Ts=0;inti;for(i=0;in;i++)s+=set;returns;}templateclassTvoidArrayT::disp(){inti;for(i=0;in;i++)coutset[i];coutendl;}voidmain(){inta[]={6,3,8,1,9,4,7,5,2};doubleb[]={2.3,6.1,1.5,8.4,6.7,3.8};Arrayintarr1(a,9);Arraydoublearr2(b,6);coutarr1:endl;cout原序列:;arr1.disp();cout8在arr1中的位置:arr1.seek(8)endl;arr1.sort();cout排序后:;arr1.disp();coutarr2:endl;cout原序列:;arr2.disp();cout8.4在arr2中的位置:arr2.seek(8.4)endl;arr2.sort();cout排序后:;arr2.disp();}5、编写一个程序,求输入数的平方根。设置异常处理,对输入负数的情况给出提示。#includeiostream#includecmathusingnamespacestd;voidmain(){doublenumber;cout请输入一个数:;cinnumber;try{if(number0)thrownumber;cout平方根是sqrt(number)endl;}catch(double){cout输入数为负数,错误!endl;}}
本文标题:河北工业大学-C++实验报告实验五
链接地址:https://www.777doc.com/doc-5419399 .html