0%

【题解】ACMOJ 1080 后缀表达式

题目描述

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;
}