解题思路
由于输入格式固定,所以比较好计算。
首先创建一个操作数栈和一个运算符栈,读入的字符分别进栈,当运算符栈读入的为+号时不动,读入减号时将后一个操作数转换为负数(-1*x),读入乘除时出栈两个操作数进行运算,将结果入栈,最后将剩余的运算符进行加法操作。
注意
几个注意点:
- 除法时需要注意除数与被除数的顺序。
- 减号转换为加负数是因为:如果有一个表达式为
a-b*c-d
时c-d
的-
号视为减法没有问题,但是前面的负号由于算法原因,会计算为a-(b*c-d)
,即a与后面的整个部分相减,不符合运算规则。
代码
散装c++(初学,好多c++不会)。
#include <iostream>
using namespace std;
int ma