一个简单计算器的C程序


一个简单计算器的C程序,该程序的功能: 每行读取一个数(数前面可能有正负号) 并对他们求和, 每次输完后把这些数的累加总和 打印出来(各种功能以后还会不断地完善)。

  1.  #include <stdio.h>  
  2.  #include <ctype.h>  
  3.  #define MAXLINE 100  
  4.  double atof(char s[]);  
  5.  int getline_(char s[], int lim);  
  6.    
  7.  int main(void)  
  8.  {  
  9.      double sum;  
  10.      char line[MAXLINE];  
  11.    
  12.      sum = 0;  
  13.      while (getline_(line, MAXLINE) > 0){  
  14.          printf("\t %g \n", sum += atof(line));  
  15.      }  
  16.      return 0;  
  17.  }  
  18.    
  19.  double atof(char s[]) /*把字符串转换为相应的双精度浮点型*/  
  20.  {  
  21.     double val, power;  
  22.     int i, sign;  
  23.    
  24.     for(i = 0; isspace(s[i]); i++) /*跳过空格*/  
  25.      ;  
  26.    
  27.     sign = (s[i] == '-') ? -1 : 1;   /*符号处理*/  
  28.     if( s[i] == '+' || s[i] == '-' )  
  29.       i++;  
  30.    
  31.     for(val = 0.0; isdigit(s[i]); i++)    /*小数点右的处理*/  
  32.         val = 10.0 * val + (s[i] - '0');  
  33.    
  34.     if(s[i] == '.')                       /*小数点的处理*/  
  35.        i++;  
  36.    
  37.     for(power = 1.0; isdigit(s[i]); i++){  /*小数点左的处理*/  
  38.          val = 10.0 * val + (s[i] - '0');  /*字符转 整数*/  
  39.          power *= 10.0;  
  40.     }  
  41.     return sign * val /power;             /*把转换好后的数返回*/  
  42.  }  
  43.    
  44.  int getline_(char s[], int lim)  
  45.  {  
  46.      int c , i;  
  47.     i = 0;  
  48.      while(--lim > 0 && (c = getchar()) != EOF && c != '\n')  
  49.          s[i++] = c;  
  50.      if(c == '\n')  
  51.          s[i++] = c;  
  52.      s[i] = '\0';  
  53.      return i;  
  54.  }  
  55.   
  56.     

相关内容