逆波蘭表達式
阿新 • • 發佈:2017-10-04
表達式 code char 1.0 switch 輸出 return 內存 esp
時間限制: 1000 ms 內存限制: 65536 KB
逆波蘭表達式
鏈接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1198
時間限制: 1000 ms 內存限制: 65536 KB
【題目描述】
逆波蘭表達式是一種把運算符前置的算術表達式,例如普通的表達式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
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; double n; char s[101]; double j() { cin>>s; switch(s[0]) { case ‘+‘:n=j()+j();break; case ‘*‘:n=j()*j();break; case ‘-‘:n=j()-j();break; case ‘/‘:n=j()/j();break; default:n=atof(s); } return n; } int main() { printf("%f\n",j()); }
逆波蘭表達式