【HDOJ】1237 简单计算器

数据结构经典习题了,可以仅用一个栈,因为符号优先级很明显。

 1 #include <stdio.h>
 2 
 3 #define MAXNUM 205
 4 
 5 double stack[MAXNUM];
 6 
 7 int main() {
 8     int top;
 9     double m, n;
10     char ch;
11 
12     while (scanf("%lf", &m) != EOF) {
13         ch = getchar();
14         if (ch=='\n') {
15             if (m) {
16                 printf("%.2lf\n", m);   // input just one num.
17                 continue;
18             }
19             else
20                 break;
21         }
22         top = 0;
23         stack[top++] = m;
24         ch = getchar();
25         while (scanf("%lf", &n) != EOF) {
26             if (ch=='+') {
27                 stack[top++] = n;
28             } else if (ch=='*') {
29                 m = stack[--top];
30                 stack[top++] = m*n;
31             } else if (ch=='/') {
32                 m = stack[--top];
33                 stack[top++] = m/n;
34             } else if (ch=='-') {
35                 stack[top++] = (0-n);
36             }
37 
38             ch = getchar(); // get space nexto num
39             if (ch=='\n')
40                 break;
41 
42             ch = getchar(); // get op
43         }
44         m = 0;
45         while (top)
46             m += stack[--top];
47         printf("%.2lf\n", m);
48     }
49 
50     return 0;
51 }

 

posted on 2014-03-21 18:17  Bombe  阅读(174)  评论(0)    收藏  举报

导航