C程序设计结课论文剖析_第1页
C程序设计结课论文剖析_第2页
C程序设计结课论文剖析_第3页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、中国农业大学(2014-2015学年秋季学期)论文题目:C+程序设计期末大作业实验报告课程名称:C+程序设计任课教师:班 级:学 号:姓 名:目录目录1C+程序设计期末大作业实验报告 2CTestl2源代码:2CTest1_main.cpp(主函数):2CTest1_function.cpp (函数): 3程序测试结果及说明: 6CTest211源代码:11CTest2_main.cpp(主函数 ): 11CTest2_class.cpp (类):13CTest2_function.cpp (函数): 15程序测试结果及说明: 16学习心得和建议 错误!未定义书签。C+程序设计期末大作业实验报

2、告CTestl源代码:CTest1_main.cpp 主函数):#in elude <iostream> using n amespace std; void circle ();void recta ngle (); void tran gle (); double readch();void result(double l,double s);void mai n ()char n='a'cout<<"*"<<e ndl;cout<<"*"<<e ndl;cout<&l

3、t;"*欢迎使用周长面积计算器!*n"cout<<"*"<<e ndl;cout<<"*"<<e ndl;cout<<e ndl<<e ndl;欢迎界面cout<<" 使用说明:"<<endl<<endl;"<<e ndl;"<<e ndl;cout<<"请您根据菜单提示使用本软件,每次只能输入一个数据,以回车作为结束, cout<<

4、;"多余字符将被舍弃。"<<e ndl;cout<<"请估计确认您的计算结果不会过于庞大,结果有效范围是(0,1.7*10人308cout<<"我们提供的计算结果将保留3位小数。"<<endl<<endl<<endl;/使用说明docout<<"我们可以为您提供三种图形的计算,请您输入您要计算图形的代码:n"cout<<"1圆形;n"cout<<"2长方形;n"cout<&

5、lt;"3直角三角形;n"cout<<"0退出程序;n"cout<<"您的选择:”;菜单提示,循环出现loop:ci n>>n;读取代码,标号loopfflush(stdin);/清空输入缓冲区,多余的输入将被舍弃,防止出现非法输入造成程序故障,因此使用说明中提示舍弃多余输入cout<<e ndl;switch (n)case 'O':cout<<"$n"cout<<"$ 感谢您的使用! $n"cout<<

6、"$再见! $n"cout<<"$n"exit(0);代码0,退出程序,出现退出界面,退出程序case '1':circle();/代码1,进入圆形计算函数break;case '2':rectangle(); 代码2,进入长方形计算函数break;case '3':trangle();/代码3,进入直角三角形计算函数break;default:cout<<"您输入的代码不能识别,代码只能是菜单中所列(0-3 ),请您重新输入:"goto loop;/用户输入非菜

7、单中所列代码程序报错,请求重新输入,跳转标号loop所在位置,再次读取输入while( n!='0');CTest1_function.cp|p 函数):#in clude <iostream>#include <iomanip>包含该头文件,使用 setprecision 、setw 函数#include <math.h>/包含该头文件,使用数学计算函数,如sqrt函数using n amespace std;double readch()/读数据函数,功能包括判断输入数据类型正误、数据取值是否符合要求double t;reputin:wh

8、ile(!(cin»t)判断输入类型是否正确,标号reputincin.sync();清空cin缓冲区里面未读取的信息cin. clear();清除错误状态cout<<"您输入的数据类型不能识别,请输入大于零的数字:"<<endl;提示用户重新输入doif(t<=0)判断输入数据数值是否大于零cout<<"您输入的数字小于等于零,请输入大于零的数字,请重新输入:"<<e ndl;提示用户重新输入goto reputin;/转向标号reputin,重新获取输入,判断数据是否符合要求while(

9、t<=0);fflush(stdi n);清空输入缓存区,多余输入被舍弃,防止在不知情的情况下多余数据流入下一次运算,因此使用说明中提示一次只能输入一个数据,多余数据被舍弃return t;void result(double l,double s)/数据输出函数,进行周长和面积4位有效数字输出cout<<setiosflags(ios:fixed)<<setprecision(3)<<"周长(l)="<<setw(5)<<l<<endl;cout<<setiosflags(ios:f

10、ixed)<<setprecision(3)<<"面积(s)="<<setw(5)<<s<<endl;设置域宽为5,超出自动突破,保留 3为小数cout<<resetiosflags(ios:fixed);/取消固定格式输出cout<<e ndl;cout<<e ndl;cout<<"#"<<e ndl;cout<<e ndl<<e ndl;void circle ()double pi,r,l,s;cout&l

11、t;<"您选择了“圆形”,请您输入它的半径(r) : "<<endl;cout<<"r="r=readch();/利用读数据函数读取正确的r值cout<<e ndl;pi=3.1415926;l=2*pi*r;5=卩产*;/圆形相关计算公式cout<<"您给出的"圆形”的计算结果如下:"<<endl;result(l,s);/利用数据输出函数按固定格式输出结果void recta ngle ()double a,b,l,s;cout<<"

12、您选择了“长方形”,请您分别输入它的长(a)和宽(b) : "<<endl;cout<<"a="a=readch();cout<<"b="b=readch();读数据cout<<e ndl;l=2*(a+b);s=a*b;长方形公式cout<<"您给出的长方形的计算结果如下:"<<endl;result(l,s);写数据void tran gle ()double b,h,l,s,x2,x;cout<<"您选择了“直角三角形”,请您

13、分别输入它的底边(b)和高(h) : "<<endl;cout<<"b="b=readch();cout<<"h="h=readch();读数据cout<<e ndl;x2=b*b+h*h;x=sqrt(x2);l=b+h+x;s=0.5*b*h;直角三角公式cout<<"您给出的直角三角形的计算结果如下:"<<endl;result(l,s);写数据程序测试结果及说明:1.测试菜单选择(测试主函数),进行非法的输入,程序提示重新输入,会提示重新输入的情

14、况有:1)输入一个字符串;2)出入单个任意字符;3)输入一个菜单中没有的数;4)按Enter、tab键,程序会继续等待有效输入;5)以菜单中含有的字符开头进行输入会被识别,有效字符后的字符会被忽略舍弃。2在圆形模式下(测试 circle函数),正确输入合法数据,测试是否得到保留3位小数的有效结果(测试result 函数)。3正常进入长方形模式(测试rectangle 函数),测试数据输入是否正常(测试 readch函数),不能正确录入的原因有二:1 )数据类型不正确除数字外其他字符开头(数字开头为合法,后面字符被舍弃)。2)数据类型正确,但取值不符合要求小于等于零的数均不合法,大于零实数为合法

15、。4不断选择不同模式进行计算,测试主函数是否正常,菜单是否循环出现。5直角三角形模式下(测试 trangle函数),输入两个整数,进一步测试 result函数保留3位小数稳定性。 6再次回到长方形模式,进行数据边界测试,输入两个较大的数,面积溢出,这是double型取值范围限定的,因此在使用说明中提示估计计算值是否超出边界,否则有溢出结果不准的危险。7测试数据边界,输入两个大小合适的数,结果正确表达。8测试数据边界,输入两个接近零的数,由于保留小数位的限制,结果近似为零,但依然体现精度。9测试数据边界,输入两个小数位较多的数,由于保留小数位的限制,结果为一具有一定精度的近似值。10.测试程序退

16、出机制和退出页面,输入菜单代码零,页面显示如图,程序测试完毕。CTest2源代码:CTest2_main.cpp主函数):#in elude <iostream>#i nclude "CTest2_class.cpp" 包含类所在文件 using n amespace std;double readch();void result(double l,double s);void mai n ()Circle yua n;Recta ngle cha ngfang; tran gle sanjiao;/ 声明对象double r,cha ng,kua n, di,

17、gao; double l,s;char n='a'cout<v"*"v<e ndl"cout<v"*"v<e ndl"coutvv"*欢迎使用周长面积计算器!* n"cout<v"*"v<e ndl"cout<v"*"v<e ndl"cout<<endl<<endl; 欢迎界面coutvv" 使用说明:"vvendlvvendl;coutvv&qu

18、ot;请您根据菜单提示使用本软件,每次只能输入一个数据,以回车作为结束,"vvendl;coutvv"多余字符将被舍弃。"vvendl;coutvv"请估计确认您的计算结果不会过于庞大,结果有效范围是(0,1.7*10人308 o "vvendl;coutvv"我们提供的计算结果将保留3位小数。"vvendlvvendlvvendl;/使用说明docoutvv"我们可以为您提供三种图形的计算,请您输入您要计算图形的代码:n"coutvv"1圆形;n"coutvv"2长方形;n

19、"coutvv"3直角三角形;n"coutvv"0退出程序;n"cout<<"您的选择:”;菜单提示,循环出现loop:cin>>n;读取代码,标号 loopfflush(stdin);清空输入缓冲区,多余的输入将被舍弃,防止出现非法输入造成程序故障,因此使用说明中 提示舍弃多余输入cout<<e ndl;switch (n)case 'O':cout<<"$n"cout<<"$感谢您的使用! $n"cout<&l

20、t;"$ 再见!$n"cout<<"$n"exit(0);代码0,退出程序,出现退出界面,退出程序case '1':cout<<"您选择了“圆形”,请您输入它的半径(r) : "<<endl;r=readch();cout<<e ndl;yua n.Set(r);/ 赋值l=yua n.Perimeter();s=yua n.Area();调用函数成员cout<<"您给出的"圆形”的计算结果如下:"<<e ndl;re

21、sult(l,s);/利用数据输出函数按固定格式输出结果break;case '2':cout<<"您选择了“长方形”,请您分别输入它的长和宽(b): "<<endl;cout<<"a="cha ng=readch();cout<<"b="kua n=readch();cout<<e ndl;cha ngfan g.Set(cha ng,kua n);l=cha ngfan g.Perimeter();s=cha ngfan g.Area();cout<

22、<"您给出的长方形的计算结果如下:"<<e ndl;result(l,s);break;case '3':cout<<"您选择了“直角三角形”,请您分别输入它的底边(b)和高(h): "<<endl;cout<<"b="di=readch();cout<<"h="gao=readch();cout<<e ndl;sanjiao.Set(di,gao);l=sanjiao.Perimeter();s=sanjiao.Area

23、();cout<<"您给出的直角三角形的计算结果如下:"<<e ndl;result(l,s);break;default:cout<<"您输入的代码不能识别,代码只能是菜单中所列(0-3),请您重新输入:"goto loop;/用户输入非菜单中所列代码程序报错,请求重新输入,跳转标号loop所在位置,再次读取输入while( n!='0');CTest2_class.cp|p类):#include <math.h>包含该头文件,使用数学计算函数,如sqrt函数class Circle/ 类

24、的定义 private:/私有数据成员 double r;public:/公有函数成员void Set(double data)r=data;double Area()/面积计算函数 double s=0;s=3.14*r*r; return s;double Perimeter。/周长计算函数 double l=0;l=2*3.14*r; return l;Circle()/不带参数的构造函数r=0;Circle(double data)/带参数的构造函数r=data;Circle(Circle &c)/拷贝构造函数r=c.r;class Recta ngleprivate :dou

25、ble len gth, width ;public :void Set( double a, double b ) len gth = a; width = b; double Area()double area;area = len gth * width ;return area;double Perimeter。 return 2*(le ngth + width) ; Recta ngle() len gth=0; width=0; Recta ngle( double a, double b ) len gth=a; width=b; Recta ngle( Recta ngle

26、&r )le ngth=ren gth; width=r.width; ;class tran gleprivate :double di, gao;public :void Set( double b, double h ) di=b; gao=h; double Area()double area;area=0.5*di*gao;return area;double Perimeter() double x2,x,l; x2=di*di+gao*gao; x=sqrt(x2);l=di+gao+x;return l;tran gle() di=0; gao=0; tran gle(

27、 double b, double h ) di=b; gao=h; tran gle( tran gle &r )di=r.di; gao=r.gao; ;CTest2_function.cp(函数):#in elude <iostream>#include <iomanip> 包含该头文件,使用 setprecision、setw 函数using n amespace std;double readch()读数据函数,功能包括判断输入数据类型正误、数据取值是否符合要求double t;reputin:while(!(cin»t)判断输入类型是否正确,标号reputincin.sync();清空cin缓冲区里面未读取

温馨提示

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

评论

0/150

提交评论