实验五--模板与异常处理

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《面向对象方法与C++程序设计》实验报告专业计算机科学与技术专业班级计科1202班姓名柯冬生学号2012013854任课教师何富贵皖西学院信息工程学院SchoolofInformationandEngineering,WestAnhuiUniversity实验五模板与异常处理(2学时)学号:2012013854姓名:柯冬生班级:计科1202班成绩:实验名称:模板与异常处理实验地点:综合楼207所使用的工具软件及环境:MicrosoftVisualC++6.0一、实验目的:(1)正确理解模板的概念。(2)掌握函数模板和类模板的声明和使用方法。(3)学习简单的异常处理方法。二、实验内容:1.分析并调试下列程序,写出运行结果并分析原因。(1)//test6_1_1.cpp#includeiostreamusingnamespacestd;templatetypenameTTmax(Tx,Ty){returnxy?x:y;}intmax(inta,intb){returnab?a:b;}doublemax(doublea,doubleb){returnab?a:b;}intmain(){cout”max(‘3’,’7’)is“max(‘3’,’7’)endl;return0;}(2)//test6_1_2.cpp#includeiostreamusingnamespacestd;intmax(inta,intb){returnab?a:b;}doublemax(doublea,doubleb){returnab?a:b;}intmain(){cout”max(‘3’,’7’)is“max(‘3’,’7’)endl;return0;}代码:(1)#includeiostreamusingnamespacestd;templatetypenameTTmax(Tx,Ty){returnxy?x:y;}intmax(inta,intb){returnab?a:b;}doublemax(doublea,doubleb){returnab?a:b;}intmain(){coutmax('3','7')ismax('3','7')endl;return0;}(2)#includeiostreamusingnamespacestd;intmax(inta,intb){returnab?a:b;}doublemax(doublea,doubleb){returnab?a:b;}intmain(){coutmax('3','7')ismax('3','7')endl;return0;}实验结果:(1)定义了一个求最大值的函数模板,定义了一个求整型最大值的函数以及一个求双精度型最大值的函数,这两个同名非模板函数与函数模板重载.’3’和’7’均是字符型,找不到与之匹配的函数,所以调用了函数模板,使其实例化,由’T’型转变为’char’型。(2)定义了一个求整型最大值的函数以及一个求双精度型最大值的函数,这两个同名函数重载.’3’和’7’均是字符型,找不到与之匹配的函数,所以得不出正确结果。2.编写一个求任意类型数组中最大元素和最小元素的程序,要求将求最大元素和最小元素的函数设计成函数模板。代码:#includeiostreamusingnamespacestd;templatetypenameTTmax(T*x,intn){Tmax=x[0];for(inti=1;in;i++)max=maxx[i]?max:x[i];returnmax;}templatetypenameTTmin(T*x,intn){Tmin=x[0];for(inti=1;in;i++)min=minx[i]?min:x[i];returnmin;}intmain(){inta[5]={1,4,2,3,5};doubleb[5]={1.1,4.4,2.2,3.3,5.5};cout数组a[5]={1,4,2,3,5}的最大值is:max(a,5)endl;cout数组a[5]={1,4,2,3,5}的最小值is:min(a,5)endl;cout数组b[5]={1.1,4.4,2.2,3.3,5.5}的最大值is:max(b,5)endl;cout数组b[5]={1.1,4.4,2.2,3.3,5.5}的最小值is:min(b,5)endl;return0;}实验结果:3.编写一个程序,使用类模板对数组元素进行排序、倒置、查找和求和。【提示】设计一个类模板templateclassTypeclassArray{...};具有对数组元素进行排序、倒置、查找和求和功能,然后产生类型实参分别为int型和double型的两个模板类,分别对整型数组与双精度数组完成所要求的操作。代码:#includeiostreamusingnamespacestd;templateclassTypeclassArray1{public:Array1(Type*a,intlength){len=length;for(inti=0;ilen;i++)Array[i]=a[i];}//templateclassTypevoidsort()//排序{Typea[10],temp;for(intn=0;nlen;n++){a[n]=Array[n];}for(intj=0;jlen;j++){for(inti=0;ilen-1-j;i++)if(a[i]a[i+1]){temp=a[i];a[i]=a[i+1];a[i+1]=temp;}}cout数组排序endl;for(intm=0;mlen;m++){couta[m]}coutendl;}//templateclassTypevoidinvert()//倒置{Typeinvert[10];for(intj=0;jlen;j++){invert[j]=Array[len-1-j];}cout数组倒置endl;for(intm=0;mlen;m++){coutinvert[m]}coutendl;}voidseek(Typey)//查找{inti=0;for(intj=0;jlen;j++){if(Array[j]==y){cout查找成功!在第j位置endl;i=j;}//break;}if(i==0)cout查找不成功!endl;}//templateclassTypevoidsum()//求和{Typesum=Array[0];for(intj=1;jlen;j++)sum=sum+Array[j];cout数组之和:sumendl;}private:intlen;TypeArray[10];};intmain(){intc[5]={1,8,2,7,9};doubled[4]={3.1,8.9,56.9,2.9};Array1inta(c,5);Array1doubleb(d,4);cout***int型数组***endl;cout原函数为:endl;for(inti=0;i5;i++){coutc[i];}coutendl;a.sort();a.invert();a.seek(3);a.sum();cout***double型数组***endl;cout原函数为:endl;for(intj=0;j4;j++){coutd[j];}coutendl;b.sort();b.invert();b.seek(8.9);b.sum();return0;}实验结果:4.编写一个程序,求输入数的平方根。设置异常处理,对输入负数的情况给出提示。代码:#includeiostream#includecmathusingnamespacestd;voidmain(){doublenumber;doubleresult;cout请输入一个数:;cinnumber;try{if(number0){throwexception(输入的数是负数!);}result=sqrt(number);cout平方根是:resultendl;}catch(exceptione){coute.what()endl;}}实验结果:三、实验总结:1.在使用非模板函数时要注意输入的语句应符合函数的类型,或者定义一个函数模板使其实例化,否则无法得出正确结论。2.对异常处理有了一些理解,但不知道异常处理(如第4题)可以循环吗?3.对用类模板实现线性表不是很懂。任课教师签名:实验六C++的流类库与输入输出(2学时)学号:2012013854姓名:柯冬生班级:计科1202班成绩:实验名称:C++的流类库与输入输出实验地点:综合楼207所使用的工具软件及环境:MicrosoftVisualC++6.0一、实验目的:(1)掌握C++格式化的输入输出方法。(2)掌握重载运算符“”和“”的方法。(3)掌握磁盘文件的输入输出方法。二、实验内容:1.下面给出的test7_1_1.cpp程序用于打印九九乘法表,但程序中存在错误。请上机调试,使得此程序运行后,能够输出如下所示的九九乘法表。*12345678911224336944812165510152025661218243036771421283542498816243240485664991827364554637281//test7_1_1.cpp#includeiostream#includeiomanipusingnamespacestd;intmain(){inti,j;cout”*”;for(i=1;i=9;i++)couti””;coutendl;for(i=1;i=9;i++){couti;for(j=1;j=i;j++)Couti*j;}return0;}代码:#includeiostream#includeiomanipusingnamespacestd;intmain(){inti,j;coutsetiosflags(ios::right)setw(4)*;for(i=1;i=9;i++)coutsetiosflags(ios::right)setw(4)i;coutendl;for(i=1;i=9;i++){coutsetiosflags(ios::right)setw(4)i;for(j=1;j=i;j++)coutsetiosflags(ios::right)setw(4)i*j;coutendl;}return0;}实验结果:2.下面的程序用于统计文件xyz.txt中的字符个数,请填空完成程序。//test7_2_1.cpp#includeiostream#includefstreamusingnamespacestd;intmain(){charch;inti=0;ifstreamfile;file.open(“xyz.txt”,ios::in);if(①){cout”xyz.txtcannotopen”endl;abort();}While(!file.eof()){②i++;}cout”文件字符个数:”iendl;③return0;}代码:#includeiostream#includefstreamusingnamespacestd;intmain(){charch;inti=0;ifstreamfile;file.open(xyz.txt,ios::in);if(!file){cout

1 / 23
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功