c++异常处理试验报告_第1页
c++异常处理试验报告_第2页
c++异常处理试验报告_第3页
c++异常处理试验报告_第4页
c++异常处理试验报告_第5页
免费预览已结束,剩余4页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验五异常处理实验课程名:面向对象程序设计(C+)C+)专业班级:学号:姓名:实验时间:实验地点:指导教师:一、实验目的和要求1 1、了解异常的种类2 2、理解异常继承体系3 3、学习简单的异常处理方法。4 4、掌握 C+C+中异常的定义与使用方法;二、实验内容1.给出三角形的三边a,b,c,求三角形的面积。只有a+bc,b+ca,c+ab时才能构成三角形。设置异常处理,对不符合三角形条件的输出警告信息,不予计算。程序代码#include#includeusingnamespacestd;intmain()doubletriangle(double,double,double);doublea

2、,b,c;cout请输入三角形的三边:abc;trywhile(a0&b0&c0)cout三角形的面积为area=triangle(a,b,c)endlendl;cout是否继续输入数据?否(a=0,b=0,c=0)abc;)catch(double)(cout输入的三边有误!endlc&a+cb&b+ca)(doubles=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c);)elsethrowa;returnarea;)程序运行结果c.E:c+罚庭又仟天Debug艮兔Isyb1.e/三角形的面积为非374.9812是否继续输入数据

3、?否(a=0.b=0,C=0) )561输入的三边有误IPressanykeytocontinue程序分析Try和catch后有加(),并且catch也要单独使用,后面要接try语句之间不能有其他语句。2.编写一个程序,求输入数的平方根。设置异常处理,对输入负数的情况给出提示。程序代码#include#includeusingnamespacestd;doublesquareroot(double&a)doublen;if(a=0)n=sqrt(a);elsethrowa;returnn;voidmain()doublem;charh=Y;trywhile(h=Y)cout”请输入一个

4、需开方的数:m;coutm的平方根为squareroot(m)endlendl;cout是否继续输入?Y/Nh;catch(double)cout输入的数为负数,无法开方!endlendl;)system(pause);)程序运行结果请输入一个需开方的数:1616的平方根为4是否继续输入?V/H请输入一个需开方的数188的平方根为2.82843是否继续输入?V/N请输入一个需开方的数3.人的数为负数,无法开方!请按任意键继续.-程序分析Try和catch块中必须有用花括号括起来的复合语句,即使花括号内只有一个语句,也不能省略花括号。3,求 n!n!的函数,当用户的输入太大时(例如 50),50

5、),会出现错误。编写一个程序,使用异常处理机制来解决这一问题。程序代码#includeusingnamespacestd;intfac(intn)(intresult=1;if(n16)thrown;while(n)result*=n;n-;)returnresult;)intmain()(intn;charh=Y;try(while(h=Y)(coutn;coutn!=fac(n)endl;cout是否继续输入?Y/Nh;)catch(int)(coutExceptionoccurred:Overflow!endl;)catch(char*s)(coutExceptionoccurred:s

6、endl;)return0;)程序运行结果leaseimpuita.nunbei*ntoxalctJilt;enf54*-24是否继接输入?Y/NVPleaseinputa.numberntoxalculten*517Exceptionoccurr-ed.:Overflow*Pressanykeytocontinue程序分析string类型变量在传递时相当于字符指针。并且在一个try-catch结构中只能有一个try块,但可以有多可catch块。4.设计一个关于栈的类,并且添加异常处理,判断栈空和栈溢出,在主程序中对其进行测试。程序代码#include#includeconstintSIZE=

7、100;usingnamespacestd;classFullprivate:inta;public:Full(inti):a(i)intgetValue()returna;classEmptypublic:voidshow()coutstackisempty!=SIZE-1)throwFull(a);stack+tos=a;)intpop()(if(tos0)throwEmpty();returnstacktos-;)inttop()const(returntos;);intmain()(Stacks;intb200,i=0;ifstreaminfile(data.dat,ios:in);i

8、f(!infile)(cerropendata.daterror!endl;exit(1);try(while(infile)/for(intj=0;jbi;s.push(bi);+i;for(inti=0;i=SIZE;i+)couts.pop();catch(Fulle)(coutException:StackFull.endl;coutThevaluenotpushinstack:e.getValue()endl;catch(Emptye)(e.show();return0;程序运行结果原始数据文件:号3ata.dat-记事本文件的尊辑(E)格式(。)查看(V)帮助(H)注释for(in

9、tj=0;j3;j+)语句运行结果:SJC:Window$system32cmd.exeException:StackFull-,rhevaluenotpushinstack二0青按任意键继续.注释while(infile)语句结果:FEMC:VZnd0wssystem32cmc.exe321stackisempty,请按任意键继续.程序分析此程序中,抛出的异常时两个类:Full和Empty,因此在catch语句中分别对应这两种类判断栈溢出和栈空。而catch(Fulle)或catch(Emptye)中的e是一个类的对象,用来调用对象中的成员函数。三、结论通过此次实验,我知道了如何处理异常,并且还知道在异常处理中处理析构函数,析构对象的顺序与构造的顺序相反,然后执行与异常信息匹配的catch块中的语句。OOOOOOOQOOO12345678919gAy99-9g912345678

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论