栈特点——先进后出
本题可以使用栈来解决
遇到数字就入栈
遇到符号就出栈、并运算
再把运算后的结果入栈
#include<bits/stdc++.h>
using namespace std;
stack<int>q;
string c;
int main()
{
cin>>c;
int a=0,b=0;
int i,j;
for(int k=0;k<c.length();k++)
{
if(c[k]=='@') break;
else if(c[k]<='9'&&c[k]>='0'){
a=b*10+c[k]-'0';
b=a;
}//读入字符串并转化为数字
else if(c[k]=='.'){
q.push(a);//压栈,把a存进栈底
b=0,a=0;
}
else{
if(c[k]=='-') i=q.top(),q.pop(),j=q.top(),q.pop(), q.push(j-i);//取出栈顶前两个数字,运算
if(c[k]=='+') i=q.top(),q.pop(),j=q.top(),q.pop(), q.push(j+i);
if(c[k]=='*') i=q.top(),q.pop(),j=q.top(),q.pop(), q.push(j*i);
if(c[k]=='/') i=q.top(),q.pop(),j=q.top(),q.pop(), q.push(j/i);
}
}
cout<<q.top()<<endl;
}