【问题描述】 设计一个简单的算术表达式计算器。
【基本要求】 实现标准整数类型的四则运算表达式的求值(包含括号,可多层嵌入).
【测试数据】 (30+2*70)/3-12*3 5+(9*(62-37)+15)*6 要求自行设计非法表达式,进行程序测试,以保证程序的稳定运行。
【实现提示】 可以设计以下辅助函数 status isNumber(char ReadInChar); //视ReadInchar 是否是数字而返回 TRUE 或 FALSE 。 int TurnToInteger(char IntChar); // 将字符’0’.’9’ 转换为整数 9
算术表达式解题思路
1、首先判断算式的优先级:先乘除->后加减->从左到右->先括号内->后括号外
2、再创造一个calculate函数,计算表达式,分别写加法:op1+op2;减法:op1-op2;乘法:op1*op2;除法:op1/op2
3、创建一个栈,来存储运算符
4、初始化入栈和出栈,并将表达式起始符“#”压入栈
5、首先扫描输入的表达式,读入第一个字符:
(1)若此字符不是运算符,则压入栈,读取下一个字符;
(2)若此字符是运算符,则判断栈顶元素和此字符的优先级比较结果:
1)小于,则压入栈,读取下一个字符;
2)大于,则跳出栈顶的运算符;
3)等于,则栈顶元素是“(”,此字符就是“)”,相当于匹配成功,最后读取下一个字符。
(3)所以最后出栈的栈顶元素为表达式的结果,返回此元素。