资源描述:
《数据结构课程设计-表达式计算程序设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、课程设计任务书设计题目表达式计算程序设计设计要求:设计一个能够计算表达式的程序,要求能够对包含加、减、乘、除、括号运算符的表达式进行计算。学生应完成的工作:1计算表达式手工录入,计算结果必须正确2支持两位以上的整数和浮点数的运算3运算符优先级表可在程序中直接通过代码初始化4能够检查表达式是否合法,对于错误的表达式要能够给出错误原因。参考文献阅读:[1]严蔚敏,吴伟民,数据结构(C语言版).北京:清华大学出版社,2007工作计划:1、第一周的第一天:小组布置设计题目;说明进度安排。2、第一周的第二天:小组审题,查阅资料,进行设计前的必要资料准备。3、第一周的第三天、
2、第四天、第五天:程序编写、上机调试4、第二周的第一天至第三天:上机调试程序、结果分析。5、第二周的第四天:撰写设计报告。6、第二周的第五天:设计答辩及成绩评定。任务下达日期:2016年06月10日任务完成日期:2016年06月25日指导教师(签名):学生(签名):-9-目录1设计背景……………………………………………………31.1数据结构算法设计…………………………………………31.2知识运用………………………………………………32设计方案……………………………………………………43方案实施……………………………………………………43.1几个主要函数的解析…………
3、……………………………………44结果与结论……………………………………………………114.1结构与结论分析……………………………………………………115收获与致谢……………………………………………………156参考文献………………………………………………………157附件……………………………………………………………158指导教师评语…………………………………………………16-9-1.设计背景1.1数据结构算法设计1.2知识运用2.设计方案2.1程序算法设计背景及方案核心思路3.方案实施3.1方案实施步骤几个主要函数的解析(以下作为参考)Checkfuncion(ch
4、arc[80])检查表达式是否正确,括号匹配问题,四则运算符号是否多输入问题检查运算过程中除数是否为0等等函数示例:intCheckfuncion(charc[80])//检查运算符,括号匹配是否出错{floate;inti=0,add=0,dec=0,mul=0,div=0,Lbracket=0,Rbracket=0;SqStackOPTR3;-9-InitStack(OPTR3);while(c[i]!=' '){switch(c[i]){case'(':Push(OPTR3,c[i]);break;case')':{if(i==0){printf("**报
5、错:你在第一个位置输入了')',违法!**");Rbracket++;returnERROR;}if(i!=0){while(GetTop(OPTR3)!='('&&!StackEmpty(OPTR3)){Pop(OPTR3,e);}}if(StackEmpty(OPTR3))Rbracket++;elsePop(OPTR3,e);break;}case'+':case'-':case'*':case'/':{if(c[i-1]==c[i])switch(c[i]){case'+':add++;break;case'-':dec++;break;case'*'
6、:mul++;break;case'/':div++;break;default:break;}Push(OPTR3,c[i]);break;}default:break;-9-}i++;}while(!StackEmpty(OPTR3)){Pop(OPTR3,e);if(e=='(')Lbracket++;}if(add>0
7、
8、dec>0
9、
10、mul>0
11、
12、div>0
13、
14、Lbracket>0
15、
16、Rbracket>0){printf("
17、***最终报错:多输入了");if(Lbracket>0)printf("%d个(",Lbracket);if(Rbracket>
18、0)printf("%d个)",Rbracket);if(add>0)printf("%d个+",add);if(dec>0)printf("%d个-",dec);if(mul>0)printf("%d个*",mul);if(div>0)printf("%d个(",div);printf("***
19、");printf("
20、********************************************
21、");printf("+++请重新再输入一个表达式:+++");printf("
22、*******************************
23、*****