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 }
一个简单计算器的c程序
最新推荐文章于 2022-10-20 14:39:07 发布