目录
一、【问题描述和基本要求】
1.【问题描述】
设计一个简单的算术表达式计算器。
2.【基本要求】
实现标准整数类型的四则运算表达式的求值(包含括号,可多层嵌入).
3.【测试数据】
(30+2*70)/3-12*3 5+(9*(62-37)+15)*6 要求自行设计非法表达式,进行程序测试,以保证程序的稳定运行。
4.【实现提示】
可以设计以下辅助函数 status isNumber(char ReadInChar); //视ReadInchar 是否是数字而返回 TRUE 或 FALSE 。 int TurnToInteger(char IntChar); // 将字符’0’.’9’ 转换为整数 9
二、【算法思想】
1.【运算数和运算符】
运算数就是参与运算的整数。运算符指加减乘除,左右括号以及‘#’,其中‘#’用于标记输入的开始与结束,起一个标识的作用。也就是说,用户的输入必须以‘#’作为结束。
如果读到的是数字字符,那么表明现在正在输入的是运算数。为了得到完整的数字,先将这些数字字符按顺序存储到缓冲区(temp栈),直到读到运算符时,将缓冲区的数字按照权重相加,构造出完整的运算数,压入运算数栈中去,同时清空temp栈。
如果读到的是运算符,那么按照规则比较oprt栈顶运算符和此运算符的优先级
2.【基础结构】
double* base | 栈底 |
double* top | 栈顶 |
int stacksize | 栈长 |