一个简单计算器的c程序

 
  1 /*该程序的功能: 每行读取一个数(数前面可能有正负号) 并对他们求和, 每次输完后把这些数的累加总和 打印出来(各种功能以后还会不断地完善)*/
  2 #include <stdio.h>
  3 #include <ctype.h>
  4 #define MAXLINE 100
  5 double atof(char s[]);
  6 int getline_(char s[], int lim);
  7 
  8 int main(void)
  9 {
 10     double sum;
 11     char line[MAXLINE];
 12 
 13     sum = 0;
 14     while (getline_(line, MAXLINE) > 0){
 15         printf("\t %g \n", sum += atof(line));
 16     }
 17     return 0;
 18 }
 19 
 20 double atof(char s[]) /*把字符串转换为相应的双精度浮点型*/
 21 {
 22    double val, power;
 23    int i, sign;
 24 
 25    for(i = 0; isspace(s[i]); i++) /*跳过空格*/
 26     ;
 27 
 28    sign = (s[i] == '-') ? -1 : 1;   /*符号处理*/
 29    if( s[i] == '+' || s[i] == '-' )
 30       i++;
 31 
 32    for(val = 0.0; isdigit(s[i]); i++)    /*小数点右的处理*/
 33        val = 10.0 * val + (s[i] - '0');
 34 
 35    if(s[i] == '.')                       /*小数点的处理*/
 36       i++;
 37 
 38    for(power = 1.0; isdigit(s[i]); i++){  /*小数点左的处理*/
 39         val = 10.0 * val + (s[i] - '0');  /*字符转 整数*/
 40         power *= 10.0;
 41    }
 42    return sign * val /power;             /*把转换好后的数返回*/
 43 }
 44 
 45 int getline_(char s[], int lim)
 46 {
 47     int c , i;
 48     i = 0;
 49     while(--lim > 0 && (c = getchar()) != EOF && c != '\n')
 50         s[i++] = c;
 51     if(c == '\n')
 52         s[i++] = c;
 53     s[i] = '\0';
 54     return i;
 55 }

  


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值