题目描述
ACMOJ - 1080 - 后缀表达式
计算给定后缀表达式的值,其中@
为表达式终止符,.
为操作数结束标识
问题分析
按照后缀表达式的规则计算即可,推荐使用字符串进行处理,注意操作数的完整提取
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| #include <cstdio> #include <cctype> const int NMAX = 10005;
char suffix[NMAX]; int stack[NMAX], top = 0;
int main() { scanf("%s", suffix); for (int p = 0; suffix[p] != '@'; p++) { if (isdigit(suffix[p])) { int oprand = 0; while (suffix[p] != '.') oprand = oprand * 10 + suffix[p] - '0', p++; stack[++top] = oprand; } else if (suffix[p] == '+') top--, stack[top] = stack[top] + stack[top + 1]; else if (suffix[p] == '-') top--, stack[top] = stack[top] - stack[top + 1]; else if (suffix[p] == '*') top--, stack[top] = stack[top] * stack[top + 1]; else if (suffix[p] == '/') top--, stack[top] = stack[top] / stack[top + 1]; } printf("%d\n", stack[top]); return 0; }
|