题目描述
逆波兰表达式是一种把运算符前置的算术表达式 , 例如普通的表达式 2 + 3 的逆波兰表示法为+ 2 3。逆波兰表达式的优点是运算符之间不必有优先级关系,也 不必用括号改变运算次序, 例如( 2 + 3 ) * 4 的逆波兰表示法为* + 2 3 4。本题求解逆波兰表达式的 值, 其中运算符包括+、-、*、/四种。
输入
输入为一行,其中运算符和运算数之间都用空格分隔,运算数是浮点数。
输出
输出为一行,为表达式的值(长度 ≤100)。
输入输出样例
样例输入 #1
* + 11.0 12.0 + 24.0 35.0
样例输出 #1
1357.000000
参考解答:
#include<stdio.h>
#include<stdlib.h>
double f()
{
char arr[100];
scanf("%s", arr);
switch (arr[0])
{
case'+':return f() + f(); break;
case'-':return f() - f(); break;
case'*':return f() * f(); break;
case'/':return f() / f(); break;
default:return atof(arr);
}
}
int main()
{
double n;
n = f();
printf("%lf", n);
return 0;
}