《C语言课程设计-计算机软件.doc》由会员分享,可在线阅读,更多相关《C语言课程设计-计算机软件.doc(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C语言课程设计课程设计报告题 目学 号姓 名年级专业指导教师完成日期年月日安徽师范大学物理与电子信息学院College of Physics and Electronic Information, Anhui Normal University问题描述:通过查找资料以及老师的讲解和指导下,运用C语言编程课本所学过的知识设计一个计算器软件,并要求能够实现加减乘除功能;要求单字符输入即输入的数字或符号不需要按回车键具有一定的容错能力按回车键或等号键则显示计算结果。通过课程设计,初步锻炼运用所学基础知识解决实际问题的能力,加强学生研发调试程序的能力,掌握软件开发的基本过程和基本方法以及良好的编程风格
2、,培养在软件开发中相互合作的团队意识。基本要求:计算器软件1) 能够实现加减乘除功能;2) 要求单字符输入,即输入的数字或符号不需要按回车键;3) 具有一定的容错能力;4) 按回车键或等号键则显示计算结果。系统分析和设计: 1) 刚启动计算器时的状态:开始计算按键开始键“ON”;清零:计算器刚启动时,或者任何时候键入了清零键,计算器所处得状态。 2)一个操作数:输入了一个操作数时计算器所处的状态,如键入“2”后的状态,此时操作数为“2”,或者依次键入“3”,“4”后的状态,此时操作数为“34”。 3)运算结果:键入了“=”键后计算器所处的状态,如依次键入“3+5=”之后计算器的状态。在此时状态
3、如果输入数字,输入数字将作为第一个操作数,开始一次新的计算。 4)一个操作数和一个两元符号:输入了一个操作数和加减乘除中的一个键后计算器状态,如依次输入“2+”或31*5=/之后计算器的状态。 5)操作数两元符操作数:输入了一个操作数,一个加减乘除符号和另一个操作数后所处的状态,如依次输入“30/4”或“3+5=/”后的计算器状态。 6)操作数两元符运算结果:输入了一个操作数,一个加减乘除符号和另一个操作数后紧接着键入开方键计算器所处的状态。 7)错误:执行非法计算后计算器所处的状态。如执行/0计算或者对负数的开方计算后的状态,比如7/0计算后的结果是“0不能做除数”。结构图:准备显示 输入接
4、收数据 是否能显示结果结束流程图根据提示选择是否开始根据提示计算的题目数进行答题统计结果给出正确答案用goto语句实现是否循环2、进入第一步出现如下信息: 开始测试?(输入y开始,输入n退出) 选择y后,进入第二步。 用户输入要练习的题数。 第三步:输出算术式子 用户输入结果进行测试。 第四步:输出测试结果 屏幕显示出本次测试的基本情况。2.2、部分模块流程图开始定义整型,浮点型数据 char nibo50,zhan250;double x,n,l,z=0,zhan350;依次输入运算数和运算符,数组等复合运算加减乘除复合运算判断是哪种运算方式简单运算乘除先运算得出结果加减后运算得出结果括号内
5、平方开方先运算后乘除加减括号外依次乘除后加减运算输出测试相关结果函数调用实现是否循环程序清单#include#include#includedouble jisuan(char a)int i=1,j,k,m,cnt=0,t1=0,t2=0,t3=0; char nibo50,zhan250;double x,n,l,z=0,zhan350;typedef struct double d1;int d2;dd;typedef structdd data50;int top; zhan1;zhan1 *shu;shu=(zhan1 *)malloc(sizeof(zhan1);shu-top=0
6、; while(ai!=0)if(ai=0&ai=0&aj=9) j+; j-; for(k=i;k=0&aj=9) j+; j-; for(k=i;kdata+shu-top.d1=x; shu-datashu-top.d2=+cnt; nibo+t1=0+shu-datashu-top.d2; nibot1+1=0;else if(ai=() zhan2+t2=ai; i+;else if(ai=) j=t2; while(zhan2j!=() nibo+t1=zhan2j; nibot1+1=0; j-; t2=j-1; i+;else if(ai=+) while(t20&zhan2t
7、2!=() nibo+t1=zhan2t2; nibot1+1=0; t2-; zhan2+t2=ai; i+;else if(ai=-) if(ai-1=$) a0=0; i=0; else if(ai-1=() ai-1=0; ai-2=(; i=i-2; t2-; else while(t20&zhan2t2!=() nibo+t1=zhan2t2; nibot1+1=0; t2-; zhan2+t2=ai; i+; else if(ai=*|ai=/) while(zhan2t2=*|zhan2t2=/|zhan2t2=|zhan2t2=#) nibo+t1=zhan2t2; nibo
8、t1+1=0; t2-; zhan2+t2=ai; i+;else if(ai=|ai=#) while(zhan2t2=|zhan2t2=#) nibo+t1=zhan2t2; nibot1+1=0; t2-; zhan2+t2=ai; i+;while(t20)nibo+t1=zhan2t2;nibot1+1=0;t2-;j=1;t3=0;while(j=0&niboj!=&niboj!=#)/ for(i=1;itop;i+) if(int)(niboj-0)=shu-datai.d2) m=i; break; zhan3+t3=shu-datam.d1; else if(niboj=+
9、) zhan3t3-1=zhan3t3-1+zhan3t3; t3-; else if(niboj=-) zhan3t3-1=zhan3t3-1-zhan3t3; t3-;else if(niboj=*) zhan3t3-1=zhan3t3-1*zhan3t3; t3-;else if(niboj=/) zhan3t3-1=zhan3t3-1/zhan3t3; t3-;else if(niboj=) zhan3t3-1=pow(zhan3t3-1,zhan3t3); t3-;else if(niboj=#) zhan3t3=sqrt(zhan3t3);j+;return zhan3t3;voi
10、d main()for(;)char x,a50;double jieguo;int i=0;a0=$;printf(#章 贤 胜n);printf(#表示开方,表示乘方(支持负数)n); printf(请输入表达式无需输入 = 号 直接回车可输出答案 退出请输入q nn); scanf(%c,&x);if(x=q) break;while(x!=n)a+i=x;scanf(%c,&x);ai+1=0;jieguo=jisuan(a); printf(n); printf(结果为:%lf,jieguo); printf(nnn);printf(退出请输入q 继续请直接输入nn);测试数据:1.
11、输入“1+2”按Enter可得到答案2输入“5-4” 按Enter可得到答案3.输入“-12*3” 按Enter可得到答案4.输入“16/4” 按Enter 可得到答案5.输入“4#(或#4)” 按Enter可得到答案6.输入“5(-2)” 按Enter 可得到答案7.输入“q” 按Enter显示“press any key to continue”退出程序小结及收获和体会:本程序在刚开始调试是有许多错误,但在我的努力及同组同学的帮助下都被一一克服,现在在操作本程序时可根据提示进行相关操作,能正确输出结果。在刚开始的几次调试中曾出现过不能运行,不能输出正确结果等等问题。经过我的努力和同学的帮助
12、,这些问题得到克服,并且使程序的功能也得到了一定的完善。现在它能正确的进行四则运算及一些高级的开方运算。在本次设计过程中,不仅复习课本上所学的知识,还通过查资料问同学学到了许多书本上没有的知识。从而启发自我,要想写好程序,在学好课本知识的同时还要多读和程序有关的一些书籍,同时还要多动脑子,尽量把所学的知识综合起来运用,力争写出完美的程序。除此之外,我还得到了一些有用的教训:写程序使必须要细心,不能出错一个字符标点,就连全角半角也的注意。在修改时要有耐心,编译出错后必须逐个错误去改正,绝不能心浮气躁,否则修改之后还会有新的错误。感谢:能够完成这次课程设计必须感谢C语言老师汤萍萍(是她教会了我C语
13、言这门课程),江婷,张磊同学(她们帮我修改该了几处重要的错误,同时启发我完善了该程序的功能)5参考书目1 谭浩强,C程序设计教程,清华大学出版社,2007年2 赵永哲,李雄飞,戴秀英编著,C语言程序设计,科学出版社,2003年3 夏宽理,赵子正编著,C语言程序设计,中国铁道出版社,2006年4 谭浩强编著,C程序设计,清华大学出版社,1991年5 Gary J. Bronson, A First Book of ANSI C (Fourth Edition), Publishing House of Electronics Industry, 2006.6 Al Kelley, Ira Pohl, A Book on C: Programming in C (Fourth Edition), China Machine Press, 2004.7 Brian W. Kernighan, Dennis M. Ritchie, The C Programming Language, China Machine Press, 2006.物理与电子信息学院课程设计评定意见指导教师评语主要内容包括:设计报告内容的完整性和完成情况、报告格式的规范性、通过课程设计取得的收获等。成绩: 签名: 年 月 日注:本页与上一页用A3纸套印成封面和封底,课程设计报告正文用A4纸打印然后装订。
限制150内