首页 > 用户发贴区 > 编程问题提问区 > C语言实现 波兰式计算器
2008
05-11

C语言实现 波兰式计算器



背景


以下是几个标准的表达式:



  • 5 * 2 + -3
  • 5 * (2 + -3)
  • 5 + ((-4 * -5) + (((5 + (6 – 2)) * 7 + ((4 + 2) * (3 – 1))))

与之等价的波兰表达式为



  • + * 5 2 -3
  • * 5 + 2 -3
  • + 5 + * -4 -5 + * + 5 – 6 2 7 * + 4 2 – 3 1

在普通的表达式中,符号是位于运算对象之间的,而在波兰表达式中,运算符号位于参与运算的对象之前。


波兰式在计算中的价值在于它不需要使用括号,之所以如此是由于波兰式的操作符的先后顺序是明确的。


如果我们用 P 表示波兰表达式,用 O 表示操作符,用 D 表示数字,则可以将波兰表达式定义为 P = O P PP = D


任务


编写程序计算波兰表达式的值。


输入


输入第一行是一个整数,表示输入文件中共有几个波兰式,之后每一行是一个波兰表达式。


每个表达式包含数字和二元操作符 +-*,操作数和运算结果都在 [-101000, 101000] 之间。


可以假设每行的数据(运算符号和数字)总共不超过 100 个。


输出


对每个表达式输出其值。


测试输入



















































15回车
+ 10 21回车
+ 10 -21回车
+ -10 21回车
+ -10 -21回车
- 10 21回车
- -10 21回车
- 10 -21回车
- 21 10回车
* 10 21回车
* -10 21回车
* 10 -21回车
* -10 -21回车
+ 5 + * -4 -5 + * + 5 - 6 2 7 * + 4 2 - 3 1回车
+ 1 + 1 + 1 + 1 + 1 * 2 * 2 * 2 - 8 - 7 - 6 - 5 4回车

+ - + 5 2 * 2 2 * 1 3回车


期待的输出
















































31回车
-11回车
11回车
-31回车
-11回车
-31回车
31回车
11回车
210回车
-210回车
-210回车
210回车
100回车
53回车
6回车


C语言实现 波兰式计算器》有 1 条评论

  1. doctor 说:

    用进栈出栈

留下一个回复