logo资料库

c++课程设计报告 模拟计算器程序.doc

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
课程设计报告 课程设计题目:模拟计算器程序 学生姓名 专 班 业 级 计算机科学与技术 指导教师 艾菊梅 2011 年 6 月 4 日
一、实验题目: 设计一个程序来模拟一个简单的手持计算器。程序支持算术运算+、-、*、/、=、以及 C(清除)、A(全清除)操作。 基本要求 程序运行时,显示一个窗口,等待用户输入,用户可以从键盘输入要计算的表达式,输 入的表达式显示在窗口中,用户键入’=’ 符号后,窗口显示出结果。(不用考虑运算符的优先 级) 测试数据 程序输入不少于 5 种不同的表达式进行测试 二、实验时间、地点: 2011-5-30~ 2011-6-3、信工楼 302 三、实验目的 本次课程设计的主要目的是综合运用所学的 C 语言知识解决一个比较实际的简单问题, 侧重对数组、函数、指针、结构体和文件等相关内容的综合应用,使同学们能进一步熟悉掌 握 C 语言的基本语法,进一步提升自己的编程能力并逐步培养编程思维,进而不断提高同 学们解决问题的能力,并为以后的语言学习打下良好的基础。 四、实验要求 1. 独立完成; 2. 此次课程设计在规定的时间必须在实验室完成,不得以任何理由在其他地点进行; 3.每个人需按照选题规则确定好自己的题目(注意不是多人完成一题,每人独立完成 一题),不得以任何理由选择其他的题目,当然在完成自己的题目之后根据个人兴趣可 以继续选做其他的题目; 4.课程设计完成后严格按照报告格式撰写课程设计报告,并于结束后的第三天上交到 学习委员统一交给老师; 5.课程设计的成绩由两部分组成:程序检查成绩(40%,每个功能占程序分的 20%) +报告检查成绩(40%)+平时考核(20%) 6. 每个程序实现方式可以自选,可以采用文件、链表、数组或其任意组合完成。 五、实现思路 为了用 c 语言模拟实现一个简单的手持计算器,必须对计算器的功能进行分析,然后 根据计算器的功能作相应的设计。 本设计只要求程序支持算术运算+、-、*、/、=、以及C(清除)、Q(关闭)操作。 对此对程序作如下分析: 1、 2、 3、 4、 要实现计算器的+、-、*、/、=,首先进行变量定义,要有 scanf 函数对数字进 行输入,并对输入的符号进行判断,然后执行相应的计算。 对字符的判断我用的是 if 语句,如果所输入的字符对应于+、-、*、/中的一个 然后我就对其进行标记。 然后用多分支选择结构 switch 语句对进行选择计算,分别进行加减乘除。最后 用 printf 函数输出结果(result) 接着编写清除程序,要清屏,开头要包括 windows 和 stdlib 函数。当执行完输
出语句后要对接下来的输入的字符进行判断,如果输入为 C 则执行清屏语句 system("CLS"),然后用 goto 语句进行循环使程序跳到 loop1 即开始新的计算, 如果输入为 Q,则程序跳到 loop2,使程序关闭。 程序的 N—S 流程图如下 5、 输入 num1、c、num2 C 是否为+ 是 否 c 是否为— Num1+ Num2=> 是 Result num1-nu 否 c 是否为* M2=>res 是 Ult 否 (为/) Num1*nu num1/num M2=>resu2=>result Lt 输出 result 输入 X X 是否为 c 是 清屏 否(为 q) 结束程序 六、实现过程 #include #include #include void main() {int act,x; float num1=0,num2=0,result; /* 主函数*/ /*定义整型变量*/ /*定义浮点型变量*/
/*输入*/ /*判断*/ /*做计算加法标志值*/ /*做计算减法标志值*/ /*做计算乘法标志值*/ /*做计算除法标志值*/ /*根据运算符号运算*/ char c; /*定义字符型变量*/ loop1:scanf("%f%c%f",&num1,&c,&num2); if(c=='+') {act=1; } if(c=='-') {act=2; } if(c=='*') {act=3; } if(c=='/') {act=4;} switch(act) {case 1:result=num1+num2;break; case 2:result=num1-num2;break; case 3:result=num1*num2;break; case 4:result=num1/num2;break; } printf("%.2f\n",result); x=getchar(); if(x=='c') system("CLS"); if(x=='q') goto loop2; goto loop1; loop2:; } /*输入一个字符*/ /*判断字符*/ /*清屏*/ /*跳到 loop2(结尾)*/ /*跳到 loop1(循环)*/ /* 标识符*/ /*输出结果*/ /*做加法*/ /*做减法*/ /*做乘法*/ /*做除法*/ 七、实验总结(分析程序的得与失) 1、经过运行本程序能够进行加减乘除计算,已具备简单计算器的功能,基本达到 了题目的要求。 2、在编写程序的过程中,对字符的判断做标记,用 switch 语句选择运用,使结构 更加清晰,能够用 goto 语句进行循环。使程序的可执行性更强。 3、本程序还是有一定缺陷,比如只能进行二项式的加减乘除,不能进行多项的同 时计算。 4、本程序也没有记忆功能,当清屏之后,并不能保持上次的计算结果。并且上次 的结果不能参与到下次计算,使程序的扩展性不是很强。 5、本程序的计算还是比较单一,只能进行加减乘除计算,功能不强大。如果想要 改进,可以在后面加一些乘方、三角函数以及统计方面的计算。 八、心得体会 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻 炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。通过本次为期
一周的课程设计课,我有很多感触,从我拿到题目开始到完全做出程序,我经历了一个 波折的一周,但是这周我受益匪浅,明白把理论用到实践中的不容易。 由于这是自己第一次自己做程序,所以在开始的时候自己根本不知道从何入手, 完全没有头绪,经过参考资料自己才慢慢有了头绪。在实验中发现自己有很多的不足, 对课本理解的不够深刻,比如对于字符型数据的输入该用的格式,switch 语句的格式及 运用。特别是一些课外的只是了解的不够多,如怎么进行清屏,该调用什么函数。诸多 的问题一直困扰着我,这令我明白对以前知识的复习的重要性,以后一定要经常温习学 过的知识。 虽然有太多的困难,但是在艾老师的指导下课程设计还是顺利的完成了。在整个 课程设计的过程中老师非常耐心的给我们辅导,扮演着很重要的角色,特别是教我一些 课外的知识比如怎么清屏、调用那些函数等。在此非常感谢我的指导老师。
分享到:
收藏