c语言_算数表达式求值_课程设计报告

c语言_算数表达式求值_课程设计报告

ID:9381846

大小:107.00 KB

页数:17页

时间:2018-04-29

c语言_算数表达式求值_课程设计报告_第1页
c语言_算数表达式求值_课程设计报告_第2页
c语言_算数表达式求值_课程设计报告_第3页
c语言_算数表达式求值_课程设计报告_第4页
c语言_算数表达式求值_课程设计报告_第5页
资源描述:

《c语言_算数表达式求值_课程设计报告》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、目录一.概述2二.总体方案设计3三.详细设计4四.程序的调试与运行结果说明5五.课程设计总结6参考文献7附录.................................................................................................................................................8一概述一、课程设计的目的与要求本课程设计是为了配合《数据结构》课程的开设,通过设计一个完整的程序,使学生掌握数据结构的应用,算法的编写,类C语言的算法转换成C程序并用Tur

2、boC2.0或VisualC++6.0上机调试的基本方法。要求如下:1.要充分认识课程设计对自己的重要性,认真做好课程设计前的各项准备工作。2.既要虚心接受老师的指导,又要充分发挥主观能动性.结合课题,独立思考,努力钻研,勤于实践,勇于创新。3.独立按时完成规定的工作任务,不得弄虚作假,不准抄袭他人内容,否则成绩以不及格计。4.课程设计期间,无故缺席按旷课处理;缺席时间达四分之一以上者,其成绩按不及格处理。5.在设计过程中,要严格要求自己,树立严肃,严密,严谨的科学态度,必须按时,按质,按量完成课程设计。6.小组成员之间,分工明确,但要保持联系畅通,密切合作,培养良

3、好的互相帮助和团队协作精神。二、需求分析本课程设计的课题为表达式求值,要求:1.用户将表达式原样输入(在表达式结尾加上#),能得出结果(为减小难度,运算结果的10进制形式的值,不超过longdouble的存储范围);2.输入的数可以为小数(为减小难度,小数的整数与小数部分均不超过10位),负数(如果负数前有运算符,则应将负数括起来),以及2进制,8进制,10进制,16进制的数(为减小难度,数出的结果都以10进制形式表示);3.运算符号包括()、+、—、*、/;括号可以多重;二总体方案设计1.使用双链表的数据结构表示数据的存储,将用户输入的表达式以字符形式存入双链表中

4、。2.对以负数开头、以括号开头、左括号后紧跟负数的特殊情况作处理。3.将数与运算符分开;4.依次找到表达式最内层括号,次内层括号..................每次找到括号内的表达式,便将其进行只有加减乘除运算的计算。结构体类型://用来存储字符的结点类型typedefstructCharNode{charc;structCharNode*next;}CharNode;//用来存储数的结点类型typedefstructIntNode{longdoublei;structIntNode*next;}IntNode;//用来存储数的结点类型typedefstruct

5、Node{longdoublen;structNode_ys_char*next;}Node;//用来存储运算符的结点类型typedefstructNode_ys_char{charc;structNode_ys_char*next_c;structNode*next;}Node_ys_char;三详细设计我任务是整个程序的算法设计,以及部分子函数的编写,经过其他组员编写的子函数的处理,将表达式变为一个普通的表达式,其中数与运算符已经分开,将这个表达式的头指针传递到我所编写函数中,运算思想为:找到最内层的一对括号,计算括号间的表达式的值,得到值之后,用这个值替换掉原

6、始位置上的一对括号,以及其中的表达式。例如(((6.5-2*2.25)*2-6)/2+1.5)+3#,第一次替换后为((2*2-6)/2+1.5)+3#,第二次替换后为(-2/2+1.5)+3#,第三次替换后为0.5+3#,当没有括号时调用四则运算函数直接计算。如果一开始输入的表达式中没有括号,则直接调用四则运算函数进行计算。整个程序的算法思想见流程图。函数的功能如下:charPrecede(charx,chary)运算符优先级判断CharNode*CreatRegister()输入表达式,并对特殊情况做处理Node*StackChange(CharNode*top

7、,intm)将数与运算符分开,并将其他进制转化为10进制Node*Compute(Node*p)作只有加减乘除运算的表达式求值Node*GetOutcome(Node*head)求用户输入表达式的值main()主函数主要部分的详细流程图)开始输入表达式特殊情况处理将数与运算符分开找到最内层一堆括号将括号内表达式用指针带出将括号内表达式用指针带出进行只有加减乘除运算表达式求值用表达式值替换掉括号及括号间表达式取当前表达式首指针进行只有加减乘除运算表达式求值得出结果否是循环四程序的调试与运行结果说明在编写只有加减乘除的表达式求值的表达式求值时,原始思想是用两个指针分

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。