歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 一個簡單計算器的C程序

一個簡單計算器的C程序

日期:2017/3/1 11:13:14   编辑:Linux編程

一個簡單計算器的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. int main(void)
  7. {
  8. double sum;
  9. char line[MAXLINE];
  10. sum = 0;
  11. while (getline_(line, MAXLINE) > 0){
  12. printf("\t %g \n", sum += atof(line));
  13. }
  14. return 0;
  15. }
  16. double atof(char s[]) /*把字符串轉換為相應的雙精度浮點型*/
  17. {
  18. double val, power;
  19. int i, sign;
  20. for(i = 0; isspace(s[i]); i++) /*跳過空格*/
  21. ;
  22. sign = (s[i] == '-') ? -1 : 1; /*符號處理*/
  23. if( s[i] == '+' || s[i] == '-' )
  24. i++;
  25. for(val = 0.0; isdigit(s[i]); i++) /*小數點右的處理*/
  26. val = 10.0 * val + (s[i] - '0');
  27. if(s[i] == '.') /*小數點的處理*/
  28. i++;
  29. for(power = 1.0; isdigit(s[i]); i++){ /*小數點左的處理*/
  30. val = 10.0 * val + (s[i] - '0'); /*字符轉 整數*/
  31. power *= 10.0;
  32. }
  33. return sign * val /power; /*把轉換好後的數返回*/
  34. }
  35. int getline_(char s[], int lim)
  36. {
  37. int c , i;
  38. i = 0;
  39. while(--lim > 0 && (c = getchar()) != EOF && c != '\n')
  40. s[i++] = c;
  41. if(c == '\n')
  42. s[i++] = c;
  43. s[i] = '\0';
  44. return i;
  45. }

Copyright © Linux教程網 All Rights Reserved