69,372
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
//#include <stdlib.h>
#include<ctype.h>
#define MAXLINE 1000
int getline(char s[],int lim);
int strindex(char s[],char t[]);
double atof(char s[]);
main()
{
double sum,atof(char []);//为什么可以再这里声明一个函数?有什么用?
char line[MAXLINE];
int getline(char line[],int m);//为什么可以再这里声明一个函数?有什么用?
sum = 0;
while (getline(line,MAXLINE) > 0)
{
printf("\t%g\n",sum += atof(line));
}
return 0;
}
double atof(char s[])
{
double power;
double sum;
int i,sign;
for(i = 0;isspace(s[i]);++i) //跳过空格
;
sign = (s[i] == '-') ? -1 : 1; //判断符号
if(s[i] == '+' || s[i] == '-')
i++;
sum = 0.0;
power = 1.0;
while(s[i] != '.')
{
sum = sum * 10.0 + (s[i] - '0');
++i;
}
if(s[i] == '.')
i++;
while(s[i] != '\0')
{
sum = sum * 10.0 + (s[i] - '0');
power *= 10.0;
++i;
}
return sign * sum / power;
}
int getline(char s[],int lim)
{
int c;
int i,j = 0;
for(i = 0;i < lim && (c = getchar()) != EOF && c != '\n';++i)
{
s[j++] = c;
}
if (c == '\n')
{
s[j++] = c;
}
s[j] = '\0';
return j;
}
int strindex(char s[],char t[])
{
int i,j,k;
//j = k = 0;
for(i = 0;s[i] != '\0';++i)
{
for(j = i,k=0;t[k] != '\0' && s[j] == t[k];j++,k++)
;
if(k > 0 && t[k] == '\0')
return i;
}
return -1;
}
#include <stdio.h>
int main(void)
{
double a = 3.0, b = 4.0, c;
double gou_gu(double x, double y)
{
return sqrt(x*x + y*y);
}
c = gou_gu(a, b);
printf("c = %.2f\n", c);
return 0;
}