9-1 计算文件中所有非负数的平均值(C) 分数 10 作者 chong 单位 厦门大学 请编写一个程序读取abc.txt中所有的数,计算其中非负数的平均值并输出,输出结果保留3位小数。
时间: 2024-03-26 16:35:32 浏览: 32
以下是一个简单的实现,可以实现计算文件中所有非负数的平均值:
```c
#include <stdio.h>
int main() {
FILE *fp;
double sum = 0;
int count = 0;
double num;
fp = fopen("abc.txt", "r");
if (fp == NULL) {
printf("无法打开文件\n");
return 0;
}
while (fscanf(fp, "%lf", &num) == 1) {
if (num >= 0) {
sum += num;
count++;
}
}
if (count == 0) {
printf("文件中没有非负数\n");
} else {
printf("非负数的平均值为:%.3lf\n", sum / count);
}
fclose(fp);
return 0;
}
```
在这个程序中,我们首先打开名为“abc.txt”的文件,然后使用 `fscanf()` 函数读取文件中的每个数值。在读取每个数值时,我们检查它是否为非负数,如果是,则将其加入和 `sum` 中,并将计数器 `count` 加 1。最后,我们输出非负数的平均值,并关闭文件指针。
请注意,这个程序中的数值类型为 `double`,可以处理小数。如果文件中包含非数值类型的字符或字符串,或者文件中没有非负数,则程序会输出相应的错误提示。