NOI-OJ逆波蘭表達式 -开发者知识库

NOI-OJ逆波蘭表達式 -开发者知识库,第1张

描述逆波蘭表達式是一種把運算符前置的算術表達式,例如普通的表達式2 3的逆波蘭表示法為 2 3。逆波蘭表達式的優點是運算符之間不必有優先級關系,也不必用括號改變運算次序,例如(2 3) * 4的逆波蘭表示法為* 2 3 4。本題求解逆波蘭表達式的值,其中運算符包括 - * /四個。輸入輸入為一行,其中運算符和運算數之間都用空格分隔,運算數是浮點數。輸出輸出為一行,表達式的值。
可直接用printf("%f\n", v)輸出表達式的值v。樣例輸入
*   11.0 12.0   24.0 35.0
樣例輸出
1357.000000
題解Here!可使用 atof(string) 把 字符串 轉換為一個 double 類型的 浮點數 。atof定義在 cmath 中。

此題可使用 函數遞歸調用 的方法求解。

#include<iostream>#include<algorithm>
#include<cstdio>
#include<stack>
#include<cmath>
using namespace std;
double ans;
char c[110];
double work(){
scanf("%s",c);
switch(c[0]){
case ' ':return work() work();
case '-':return work()-work();
case '*':return work()*work();
case '/':return work()/work();
default:return atof(c);
}
}
int main(){
ans=work();
printf("%.6lf\n",ans);
return 0;
}


最佳答案:

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复