算式计算器C语言版
课 程 设 计 说 明 书
课程名称: 数据结构
设计题目: 表达式计算程序设计
学 院: 计算机科学与信息工程学院
学生姓名:
学生学号:
专业班级:计算机科学与技术嵌入式(12-1)
指导教师: 冯 贺
2014年 6月 16 日课 程 设 计 任 务 书
设计题目
表达式算式程序设计
学生姓名
班级
计算机科学与技术嵌入式(12-1)
设计要求:
1.计算表达式手工录入,计算结果必须正确
2.支持两位以上的整数和浮点数的运算
3.运算符优先级表可在程序中直接通过代码初始化
4.能够检查表达式是否合法,对于错误的表达式要能够给出错误原因。
学生应完成的工作:
构建栈和运算符优先级表,程序能够计算加,减,乘,除和逻辑运算,并且能够运行成功。
参考文献阅读:
[1] 严蔚敏,吴伟民 编著.数据结构(c语言版).北京,清华大学出版社,2012
[2] 严蔚敏,吴伟民 编著 Data Structures,Algorithms,and Applications in C++.McGraw-Hill
工作计划:
1、第一周的第一天:小组布置设计题目;说明进度安排。
2、第一周的第二天:小组审题,查阅资料,进行设计前的必要资料准备。
3、第一周的第三天、第四天、第五天:程序编写、上机调试
4、第二周的第一天至第三天: 上机调试程序、结果分析。
5、第二周的第四天: 撰写设计报告。
6、第二周的第五天: 设计答辩及成绩评定。
任务下达日期: 2014 年 6 月 8 日
任务完成日期: 2014 年 6 月 17 日
学生(签名):
表达式计算程序设计
摘 要:
按照要求构造运算符优先级表,编写优先级比较算法。利用栈结构和优先级编写表达式计算方法。首先构建了一个数据栈,此栈用来储存浮点型数字;一个符号栈用来存储运算符号。然后借助于两个栈和一个结构体运算。
关键词:
优先级表 优先级比较算法 栈
目 录
1. 设计背景 ………………………………………………………………1
1.1数据结构算法设计…………………………………………………1
1.2知识运用 …………………………………………………………1
2. 设计方案 ………………………………………………………………1
2.2程序设计方案………………………………………………………1
2.2模块设计方案………………………………………………………1
3.方案实施 ………………………………………………………………2
3.1模块代码……………………………………………………………2
3.1流程图………………………………………………………………6
4.测试 ……………………………………………………………………8
5.总结……………………………………………………………………10
3.1总结………………………………………………………………10
3.1谢词………………………………………………………………10
6.参考文献………………………………………………………………10
7.附件……………………………………………………………………11
1. 设计背景
1.1数据结构算法设计
1、王亚洲完成了对符号栈的编写
2、王秀文完成了对数字栈的编写
3、李渊完成了对符号结构题的编写和对符号结构体数组的初始化
4、童世超完成了对字符数字转化为浮点型数字
5、曾冰寒完成对主函数的编写
1.2知识运用
学完数据结构,充分利用所学栈的知识,完成表达式程序设计
2.设计方案
2.1程序设计方案
先定义一个结构体,用来存放符号和优先级和定义两个栈,一个数字栈、一个符号栈。然后借助于符号结构体和两个栈通过逻辑算法设计一个表达式计算程序
2.2模块设计方案
该模块是表达式计算的核心模块即计算模块。先判断接收的是不是左括号,左括号的优先级最低,如果是左括号无条件入栈;如果不是左括号则判断是不是右括号,右括号的优先级最高,遇到右括号无条件出栈运算,然后循环知道遇见左括号把括号的全部运算完毕然后继续接收字符;如果既不是左括号也不是右括号则判断是不是运算符,如果是运算符则判断和运算符栈的栈顶元素的优先级,如果栈顶元素的优先级等于或高于接收元素则出栈运算否则入栈;最后判断是不是等号,如果是等好则出栈运算,一直到数字栈中就剩下最后一个元素结果这输出结果,运算结束。
3. 方案实施
3.1模块代码
if('('==c)/