• c语言实现逆波兰表达式!


    C语言实现逆波兰表达式(栈的应用)

     #include<iostream>
     #include<cstdio>
     using namespace std;
     const int MAXSIZE = 110;
     char a[MAXSIZE];
     double operNum[MAXSIZE];
     ​
     double getSum(int* i){//地址传递,可以在边求值时边改变i的原值。如若是值传递,会导致值的重复算
      double sum = 0.0;
      int k = 0;
      while(a[*i] >= '0' && a[*i] <= '9'){
      sum = sum * 10 + a[*i] - '0';
      (*i)++;
      }
      if(a[*i] == '.'){
      (*i)++;
      while(a[*i] >= '0' && a[*i] <= '9'){
      sum = sum * 10 + a[*i] - '0';
      (*i)++;
      k++;
      }
      }
      while(k!=0){
      sum /= 10;
      k--;
      }
      return sum;
     }
     int main(){
      gets(a);//这样可以读入空格,要求以'#'结尾
     
      int i=0;
      int top=0;
      double x1,x2;
      while (a[i] != '#'){
      if(a[i] >= '0' && a[i] <= '9'){
      double f = getSum(&i);
      operNum[top++] = f;
      }else if(a[i] == ' '){
      i++;
      }else if(a[i] == '+'){
      x1 = operNum[--top];
      x2 = operNum[--top];
      operNum[top++] = x1 + x2;
      i++;
      }else if(a[i] == '-'){
      x1 = operNum[--top];
      x2 = operNum[--top];
      operNum[top++] = x2 - x1;
      i++;
      }else if(a[i] == '*'){
      x1 = operNum[--top];
      x2 = operNum[--top];
      operNum[top++] = x1 * x2;
      i++;
      }else if(a[i] == '/'){
      x1 = operNum[--top];
      x2 = operNum[--top];
      operNum[top++] = x2 / x1;
      i++;
      }
      }
     
      cout<<operNum[0]<<endl;
      return 0;
     }

     

  • 相关阅读:
    Mac014--Sourcetree安装(Git client)
    SSM003/构建Maven单模块项目(二)
    Git016--Work
    Mac013--Docker安装
    前端002/常用标签属性(工作应用)
    Python 38 初识数据库
    Python 38 sql基础
    Python 39 数据库的数据类型
    Python 39 数据库
    Python 37 进程池与线程池 、 协程
  • 原文地址:https://www.cnblogs.com/yuanshixiao/p/14538351.html
Copyright © 2020-2023  润新知