分析
用两个栈模拟各种计算方式。
C++ 代码
#include<bits/stdc++.h>
using namespace std;
int n,x;
char c;
stack<int> stk1;
stack<char> stk2;
int main()
{
cin>>n;
for(int i=0;i<n;i++) cin>>x,stk1.push(x); //将数字压入数字栈
for(int i=0;i<n-1;i++) cin>>c,stk2.push(c); //将运算符压入字符栈
while(stk2.size())
{
auto a=stk1.top(); stk1.pop();
auto b=stk1.top(); stk1.pop();
auto c=stk2.top(); stk2.pop();
if(c=='+') b+=a;
if(c=='-') b-=a;
if(c=='*') b*=a;
if(c=='/')
{
if(a==0) //当除数为0时,说明不能进行除法运算,输出错误,直接结束运行
{
printf("ERROR: %d/%d",b,a);
return 0;
}
else b/=a;
}
stk1.push(b);
}
printf("%d",stk1.top());
return 0;
}