C程序设计结课论文剖析.doc

上传人:scccc 文档编号:13595528 上传时间:2022-01-19 格式:DOC 页数:18 大小:1.35MB
返回 下载 相关 举报
C程序设计结课论文剖析.doc_第1页
第1页 / 共18页
C程序设计结课论文剖析.doc_第2页
第2页 / 共18页
C程序设计结课论文剖析.doc_第3页
第3页 / 共18页
亲,该文档总共18页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《C程序设计结课论文剖析.doc》由会员分享,可在线阅读,更多相关《C程序设计结课论文剖析.doc(18页珍藏版)》请在三一文库上搜索。

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 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*欢迎使用周长面积计算器!*n;cout*e ndl;cout*e ndl;coute ndle ndl;欢迎界面cout 使用说明:endlendl;e ndl;e ndl;

3、cout请您根据菜单提示使用本软件,每次只能输入一个数据,以回车作为结束, cout多余字符将被舍弃。e ndl;cout请估计确认您的计算结果不会过于庞大,结果有效范围是(0,1.7*10人308cout我们提供的计算结果将保留3位小数。endlendlendl;/使用说明docout我们可以为您提供三种图形的计算,请您输入您要计算图形的代码:n;cout1圆形;n;cout2长方形;n;cout3直角三角形;n;cout0退出程序;n;coutn;读取代码,标号loopfflush(stdin);/清空输入缓冲区,多余的输入将被舍弃,防止出现非法输入造成程序故障,因此使用说明中提示舍弃多余

4、输入coute ndl;switch (n)case O:cout$n;cout$ 感谢您的使用! $n;cout$再见! $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;/用户输入非菜单中所列代码程序报错,请求重新输入,跳转标号

5、loop所在位置,再次读取输入while( n!=0);CTest1_function.cp|p 函数):#in clude #include 包含该头文件,使用 setprecision 、setw 函数#include /包含该头文件,使用数学计算函数,如sqrt函数using n amespace std;double readch()/读数据函数,功能包括判断输入数据类型正误、数据取值是否符合要求double t;reputin:while(!(cint)判断输入类型是否正确,标号reputincin.sync();清空cin缓冲区里面未读取的信息cin. clear();清除错误状态

6、cout您输入的数据类型不能识别,请输入大于零的数字:endl;提示用户重新输入doif(t=0)判断输入数据数值是否大于零cout您输入的数字小于等于零,请输入大于零的数字,请重新输入:e ndl;提示用户重新输入goto reputin;/转向标号reputin,重新获取输入,判断数据是否符合要求while(t=0);fflush(stdi n);清空输入缓存区,多余输入被舍弃,防止在不知情的情况下多余数据流入下一次运算,因此使用说明中提示一次只能输入一个数据,多余数据被舍弃return t;void result(double l,double s)/数据输出函数,进行周长和面积4位有效

7、数字输出coutsetiosflags(ios:fixed)setprecision(3)周长(l)=setw(5)lendl;coutsetiosflags(ios:fixed)setprecision(3)面积(s)=setw(5)sendl;设置域宽为5,超出自动突破,保留 3为小数coutresetiosflags(ios:fixed);/取消固定格式输出coute ndl;coute ndl;cout#e ndl;coute ndle ndl;void circle ()double pi,r,l,s;cout您选择了“圆形”,请您输入它的半径(r) : endl;coutr=;r=

8、readch();/利用读数据函数读取正确的r值coute ndl;pi=3.1415926;l=2*pi*r;5=卩产*;/圆形相关计算公式cout您给出的圆形”的计算结果如下:endl;result(l,s);/利用数据输出函数按固定格式输出结果void recta ngle ()double a,b,l,s;cout您选择了“长方形”,请您分别输入它的长(a)和宽(b) : endl;couta=;a=readch();coutb=;b=readch();读数据coute ndl;l=2*(a+b);s=a*b;长方形公式cout您给出的长方形的计算结果如下:endl;result(l,

9、s);写数据void tran gle ()double b,h,l,s,x2,x;cout您选择了“直角三角形”,请您分别输入它的底边(b)和高(h) : endl;coutb=;b=readch();couth=;h=readch();读数据coute ndl;x2=b*b+h*h;x=sqrt(x2);l=b+h+x;s=0.5*b*h;直角三角公式cout您给出的直角三角形的计算结果如下:endl;result(l,s);写数据程序测试结果及说明:1.测试菜单选择(测试主函数),进行非法的输入,程序提示重新输入,会提示重新输入的情况有:1)输入一个字符串;2)出入单个任意字符;3)输入

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

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

12、完毕。CTest2源代码:CTest2_main.cpp主函数):#in elude #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,gao; double l,s;char n=a;coutv*ve ndlcoutv*ve ndlcoutvv*

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

14、形;n;coutvv2长方形;n;coutvv3直角三角形;n;coutvv0退出程序;n;coutn;读取代码,标号 loopfflush(stdin);清空输入缓冲区,多余的输入将被舍弃,防止出现非法输入造成程序故障,因此使用说明中 提示舍弃多余输入coute ndl;switch (n)case O:cout$n;cout$感谢您的使用! $n;cout$ 再见!$n;cout$n;exit(0);代码0,退出程序,出现退出界面,退出程序case 1:cout您选择了“圆形”,请您输入它的半径(r) : endl;r=readch();coute ndl;yua n.Set(r);/ 赋

15、值l=yua n.Perimeter();s=yua n.Area();调用函数成员cout您给出的圆形”的计算结果如下:e ndl;result(l,s);/利用数据输出函数按固定格式输出结果break;case 2:cout您选择了“长方形”,请您分别输入它的长和宽(b): endl;couta=;cha ng=readch();coutb=;kua n=readch();coute ndl;cha ngfan g.Set(cha ng,kua n);l=cha ngfan g.Perimeter();s=cha ngfan g.Area();cout您给出的长方形的计算结果如下:e nd

16、l;result(l,s);break;case 3:cout您选择了“直角三角形”,请您分别输入它的底边(b)和高(h): endl;coutb=;di=readch();couth=;gao=readch();coute ndl;sanjiao.Set(di,gao);l=sanjiao.Perimeter();s=sanjiao.Area();cout您给出的直角三角形的计算结果如下:e ndl;result(l,s);break;default:cout您输入的代码不能识别,代码只能是菜单中所列(0-3),请您重新输入:;goto loop;/用户输入非菜单中所列代码程序报错,请求重新

17、输入,跳转标号loop所在位置,再次读取输入while( n!=0);CTest2_class.cp|p类):#include 包含该头文件,使用数学计算函数,如sqrt函数class Circle/ 类的定义 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()/不带参数的构造函

18、数r=0;Circle(double data)/带参数的构造函数r=data;Circle(Circle &c)/拷贝构造函数r=c.r;class Recta ngleprivate :double 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(

19、) len gth=0; width=0; Recta ngle( double a, double b ) len gth=a; width=b; Recta ngle( Recta ngle &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() dou

20、ble 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( double b, double h ) di=b; gao=h; tran gle( tran gle &r )di=r.di; gao=r.gao; ;CTest2_function.cp(函数):#in elude #include 包含该头文件,使用 setprecision、setw 函数using n amespace std;double readch()读数据函数,功能包括判断输入数据类型正

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

22、在不知情的情况下多余数据流入下一次运算,因此 使用说明中提示一次只能输入一个数据,多余数据被舍弃return t;void result(double l,double s)/数据输出函数,进行周长和面积4位有效数字输出coutsetiosflags(ios:fixed)setprecision(3)周长(l)=setw(5)lendl;coutsetiosflags(ios:fixed)setprecision(3)面积(s)=setw(5)sendl;/ 设置域宽为 5,超出自动突 破,保留3为小数coutresetiosflags(ios:fixed);/ 取消固定格式输出coute ndl;coute ndl; cout#e ndl;coute ndle ndl;程序测试结果及说明:由于CTest2的主要算法和数据处理函数与CTestl相同,只是使用面向对象程序设计方法设计, 因此不再重复CTestl中的测试,只测试程序是否成功运行,测试结果如以下截图。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1