歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

一個簡單計算器的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.     

Copyright © Linux教程網 All Rights Reserved