【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 }
浙公网安备 33010602011771号