题目描述
所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级)。
如:3*(5–2)+7对应的后缀表达式为:3.5.2.-*7.+@。’@’为表达式的结束符号。‘.’为操作数的结束符号。
输入:后缀表达式
输出:表达式的值
输入
3.5.2.-*7.+@
输出
16
字符串长度,1000内。
源代码:
#include <stdio.h>int main(){ char ch; int num[1005], cnum = 0; int a = 0; while(scanf("%c", &ch), ch !='@'){ if(ch == '+'){ num[a - 2] = num[a - 1] + num[a - 2]; a--; } else if(ch == '-'){ num[a - 2] = num[a - 2] - num[a - 1]; a--; } else if(ch == '*'){ num[a - 2] = num[a - 2] * num[a - 1]; a--; } else if(ch == '/'){ num[a - 2] = num[a - 2] / num[a - 1]; a--; } else if(ch =='.'){ num[a] = cnum; a++; cnum = 0; } else cnum = cnum * 10 + (ch - '0'); } printf("%d", num[0]); return 0;}
运行结果: