简单计算器

读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。 

Input测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。 
Output对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。 
Sample Input

1 + 2
4 + 2 * 5 - 7 / 11
0

Sample Output

3.00
13.36
#include<iostream>
#include<cstdio>
#include<cstring>
#include<stack>
#include<iomanip>
using namespace std;
stack <double> s;
int main()
{
    char c;
    double a,b;
    while(cin>>a)
    {
        while(!s.empty())
            s.pop();
        c = getchar();
        if(c == '\n' && a == 0)
            break;
        s.push(a);
        scanf("%c", &c);
        while(cin>>b)
        {
            if(c == '*')
                {
                    a = s.top();
                    s.pop();
                    s.push(a*b);
                }
            else if(c == '/')
                {
                    a = s.top();
                    s.pop();
                    s.push(a/b);
                }
            else if(c == '+')
                s.push(b);
            else if(c == '-')
                s.push(-b);
            c=getchar();
            if(c == '\n')
                break;
            scanf("%c", &c);
            getchar();
        }
        double sum = 0.0;
        while(!s.empty())
        {
            sum += s.top();
            s.pop();
        }
        printf("%.2lf\n",sum);
    }
    return 0;
}

  

posted @ 2017-07-18 17:02  zzzying  阅读(196)  评论(0编辑  收藏  举报