不懂问一下跟着书上学的打出来的



```c





![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/295828875546136.png "#left")




#include<stdio.h>
#include<math.h>
#include<time.h>
#define INF 1000000
int main()
{
    FILE *fin, *fout;

    fin = fopen("data.in", "rb");
    fout = fopen("data.out", "wb");
    int x, max, min, sum = 0,n=0;
    max = -INF; min = INF;
    while (fscanf(fin,"%d",&x)==1)
    {
        sum += x;
        if (x < min)min = x;
        if (x > max)max = x;
        n++;
    }
    fprintf(fout,"%d %d %.3f\n",min,max,(double)sum/n);
    fclose(fin);
    fclose(fout);
        return 0;
}

可能是data.in文件打开失败,需要先判断一下文件是否正确打开。
需要有data.in 这个文件,并且这个文件放在你的工程目录下,这时候你的代码是可以运行的,如果没有这个文件,就会出你报的错误。

代码修改如下:

#include<stdio.h>
#include<math.h>
#include<time.h>
#define INF 1000000
int main()
{
    FILE *fin, *fout;

    fin = fopen("data.in", "rb"); //需要有这个文件,并且这个文件放在你的工程目录下
    if(fin==0)
    {
        printf("data.in open error\n");
        return 0;
    }
    fout = fopen("data.out", "wb");
    int x, max, min, sum = 0,n=0;
    max = -INF; min = INF;
    while (fscanf(fin,"%d",&x)==1)
    {
        sum += x;
        if (x < min)min = x;
        if (x > max)max = x;
        n++;
    }
    fprintf(fout,"%d %d %.3f\n",min,max,(double)sum/n);
    fclose(fin);
    fclose(fout);
    return 0;
}

读取data.in里面的数据,读取出来获取最大值,最小值,及平均数保存到data.out文件