operator.cpp

来自「利用c++自带函数尽可能完整的实现简单算术表达式求值.」· C++ 代码 · 共 50 行

CPP
50
字号
#include   <stdio.h>   
  #include   <ctype.h>   
  #include   <stdlib.H>   
  #include   <string.h>   
    
  void   Ready(char   *   str)   
  {   
  scanf("%s",   &str[1]);   
  str[0]   =   '(';   
  str[strlen(str)]   =   ')';   
  }   
    
  double   CalStr(char   *   str)   
  {   
  double   result;   
  int   flag   =   0;   
  if   (   isdigit(*str))   
  {   
  result   =   atol(str);   
  while   (   isdigit(*str))   *(str++)   =   '#';   
  }   
  else   
  {   
  if   (   *str   ==   '-')   result   =   -CalStr(str+1);   
  else   result   =   CalStr(str+1);   
  if   (   *str   ==   '('   )   flag   =   1;   
  *str   =   '#';   
  while   (   *str   ==   '#'   )   str++;   
  while   (   *str   !=   ')')   
  {   
  switch(*str)   
  {   
  case   '*':   result   *=   CalStr(str+1);   break;   
  case   '/':   result   /=   CalStr(str+1);   break;   
  default:   result   +=   CalStr(str);   break;   
  }   
  *str   =   '#';   
  while   (   *str   ==   '#')   str++;   
  }   
  if   (   flag   ==   1   )   *str   =   '#';   
  }   
  return   result;   
  }   
    
  void   main()   
  {   
  char   str[100];   
  Ready(str);   
  printf("\nthe   result   is   %lf\n",   CalStr(str));   
  }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?