#include <iostream>
#include <stack>
#include <iomanip>
using namespace std;
double result(string s){
stack<double> stk;
int len = s.size();
for(int i=0;i<len;i++){
if(!(s[i] == '+' || s[i] == '-' || s[i] == '*' || s[i] == '/')){
stk.push(s[i] -'a' + 1);//是a代表1
}
else{
//后缀表达式的计算
double a = stk.top();
stk.pop();
double b = stk.top();
stk.pop();
if(s[i] == '+'){
stk.push(a+b);
}
else if(s[i] == '-'){
stk.push(b-a);
}
else if(s[i] == '*'){
stk.push(a*b);
}
else if(s[i] == '/'){
stk.push(b/a);
}
}
}
return stk.top();
}
int main(){
int n;
cin>>n;
while(n--){
string s;
cin>>s;
double re = result(s);
cout<<fixed<<setprecision(2)<<re<<endl;
}
return 0;
}
后缀表达式的计算
最新推荐文章于 2021-02-26 23:06:35 发布