hdu 1237 简单计算器

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1237

题目大意:一个简单的计算器,只要判断好运算顺序即可。先加减后乘除~建议一个比较简单的想法,输入一个数字,再输入一个字符,接下去对字符进行判断,分别将数字存入栈中,最后将栈的数进行整理。这样做下去还可以,不过还是wa了几次!

提供测试数据:0 + 1 估计大多数都是忘记考虑这种情况了~

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <stack>
 4 #include <cstring>
 5 using namespace std;
 6 int main ()
 7 {
 8     stack<double>s;
 9     int n;
10     double m;
11     char ch,str;
12     while (scanf("%d%c",&n,&ch)!=EOF)
13     {
14         if (n==0&&ch=='
')
15         break;
16         s.push(n);
17         scanf("%c %d",&ch,&n);
18         switch (ch)
19             {
20             case '+':
21             {
22                 s.push((double)n);
23                 break;
24             }
25             case '-':
26             {
27                 s.push(-(double)n);
28                 break;
29             }
30             case '*':
31             {
32                 m=s.top();
33                 s.pop();
34                 m=m*(double)n;
35                 s.push(m);
36                 break;
37             }
38             case '/':
39             {
40                 m=s.top();
41                 s.pop();
42                 m=m/(double)n;
43                 s.push(m);
44                 break;
45             }
46             }
47         while (scanf("%c",&ch)!=EOF)
48         {
49             if (ch=='
')
50                 break;
51             scanf("%c%d",&str,&n);
52             switch (str)
53             {
54             case '+':
55             {
56                 s.push((double)n);
57                 break;
58             }
59             case '-':
60             {
61                 s.push(-(double)n);
62                 break;
63             }
64             case '*':
65             {
66                 m=s.top();
67                 s.pop();
68                 m=m*(double)n;
69                 s.push(m);
70                 break;
71             }
72             case '/':
73             {
74                 m=s.top();
75                 s.pop();
76                 m=m/(double)n;
77                 s.push(m);
78                 break;
79             }
80             }
81 
82         }
83         double sum=0;
84         while (!s.empty())
85         {
86             //cout<<s.top();
87             sum+=s.top();
88             s.pop();
89         }
90         printf ("%.2lf
",sum);
91     }
92 }
View Code
原文地址:https://www.cnblogs.com/qq-star/p/3880596.html