69,382
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
float avg()
{
FILE *pf = NULL;
int data[50000];
int i, n, s;
static int j = 0;
pf = fopen("d:/test.txt", "r");
if(NULL == pf)
{
printf("open error\n");
exit(0);
}
//先将数据按字符读入数组
for(i = 0; (data[i] = fgetc(pf)) != EOF; i++);
//考虑到文件里面的数值不是单位数,所以从后面遍历
i--;
for(n = 0, s = 0; i >= 0; i--)
{
if((data[i] != ' ') && (data[i] != '\n'))
{
if(j == 0)
{
s += (data[i] - '0'); //个位取原值
n++; //每位数都会有个位,所以在此统计有多少个数据
j++;
}
else
{
j *= 10; //其他位乘以10的n次方
s += (data[i] - '0') * j;
}
}
else
{
j = 0;
}
}
return (((float)s)/((float)n));
}
int main()
{
printf("avg = %f\n", avg());
return 0;
}
#include <stdio.h>
double avg()
{
FILE *fin;
int n, sum, d;
if ((fin = fopen("d:/test.txt", "r")) == NULL) {
fprintf(stderr, "open error");
exit(1);
}
n = 0;
sum = 0;
while (fscanf(fin, "%d", &d) != EOF) {
n++;
sum += d;
}
return (n == 0) ? 0.0 : 1.0 * sum / n;
}