acmwriter @ 2023-05-20 16:23:25
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
cin>>s;
stack<int>a;
for(int i=0;i<s.size();i++){
int b,c;
if(s[i]>='0'&&s[i]<='9')
a.push(s[i]-'0');
if(s[i]=='-'){
c=a.top();
a.pop();
b=a.top();
a.pop();
a.push(b-c);
}
else if(s[i]=='*'){
c=a.top();
a.pop();
b=a.top();
a.pop();
a.push(b*c);
}
else if(s[i]=='+'){
c=a.top();
a.pop();
b=a.top();
a.pop();
a.push(b+c);
}
else if(s[i]=='/'){
c=a.top();
a.pop();
b=a.top();
a.pop();
a.push(b/c);
}
}
cout<<a.top();
return 0;
}
by Prolystic @ 2023-05-20 16:37:10
if(s[i]>='0'&&s[i]<='9')
a.push(s[i]-'0');
这段不对,操作数不一定是一位数,还有两位数三位数等等等等,所以当这一位是字符 '.' 时才可以把操作数压栈。
by Prolystic @ 2023-05-20 16:37:57
@acmwriter
by acmwriter @ 2023-05-20 17:07:19
@Question_Terminator 知道了,谢谢大佬!