• 题目1019:简单计算器-------注意此题的输入中空格和字符和数字的关系;stack的c头文件;


    AC:#include<stdio.h>

    #include<stack>
    using namespace std; 
    int main()
    {      int a;
            char b,c;
            double d; 
        while(scanf("%d%c",&a,&c))
        {
           if (a==0 && c=='
    ') break; //注意这里,输入0结束时,有一个换行符;因为要一个                                     //一个字符的判断,所以不得不注意
    
    stack
    <double> num; num.push(a); while(scanf("%c %d%c",&b,&a,&c)!=EOF)//输入方式 { if (b=='+') num.push(a); else if (b=='-') num.push(-1.0*a); else if (b=='*') { d=num.top()*a; num.pop(); num.push(d); } else if (b=='/') { d=num.top()/a; num.pop(); num.push(d); } if (c!=' ') break; } while(!num.empty()) { if (num.size()==1) { printf("%.2lf ",num.top()); num.pop();break; } double d1=num.top(); num.pop(); double d2=num.top(); num.pop(); num.push(d1+d2); } } return 0; }

     后来又写了一次AC:

    #include<stdio.h>
    #include<stack>
    using namespace std; 
    int main()
    {
        int n1;char n2;    
        while(scanf("%d%c",&n1,&n2)!=EOF)
        {
           if(n1==0 && n2=='
    ') return 0;
            stack<double> s; 
            s.push(n1);  
            char c1,c2,c3;
            int a;
            double b;
            while(scanf("%c %d%c",&c1,&a,&c2)!=EOF)
            {
              if(c1=='+') s.push(a);
              else if(c1=='-') s.push(-1.0*a);
              else if(c1=='*') 
              {
                   b=s.top();
                s.pop(); 
                s.push(a*b);
              }    
              else if(c1=='/')
               {
                    b=s.top();
                    s.pop(); 
                    s.push(b/a);
               }
               if(c2!=' ') break;
            }
        //这样一来,stack里面的都是加数
           double res=0;
           while(!s.empty())
           {
               if(s.size()==1) 
               {
                   res=s.top();
                   printf("%.2lf
    ",res);
                   s.pop();
                   break;
               }
                double d=s.top();
                s.pop();
                double e=s.top();
                s.pop(); 
                s.push(d+e);
           } 
        }
        return 0;
    }
  • 相关阅读:
    安装express 新建项目遇到问题汇总
    Java IO
    python3基础之“函数(1)”
    python3基础之“小练习(3)”
    python3基础之“小练习(2)”
    python3基础之“小练习(1)”
    linux命令
    1.环境安装部署汇总
    阶段13-直播~
    docker环境问题
  • 原文地址:https://www.cnblogs.com/jianrenguo/p/6497853.html
Copyright © 2020-2023  润新知