从文件中读取数字并计算总和和平均值

时间:2013-11-19 09:04:05

标签: c file file-io

我需要编写一个程序来读取文件中的数字并计算平均值。读取第一个数字。这是团体规模。读取组大小的后续数字。添加它们并计算平均值。这是我到目前为止所得到的:

int main()
{
    int num1, num2, num3, num4, sum, gsize;
    FILE *inFile;
    char fname[30];

    printf("Enter a file name: ");
    gets(fname);

    inFile = fopen(fname, "r");
    if (inFile == NULL)
    {
        printf("\nFailed to open file.\n");
        exit(1);
    }


    while (fscanf(inFile, "%d %d %d %d %d %d",&gsize, &num1, &num2, &num3, &num4) != EOF)
    {
        printf("Group Size = %d\n num1 = %-12d num2 = %-18d num3 = %-24d num4 = %-30d %d\n", gsize, num1, num2, num3, num4, sum);


    }
    fclose(inFile);

}

请帮我弄清楚如何计算和打印它,以便我得到这个输出:

Enter an input file name: numbers.dat
Group Size = 2
i = 1 number = 1 Sum = 1
i = 2 number = 2 Sum = 3
Average = 1.50

Group Size = 3
i = 1 number = 1 Sum = 1
i = 2 number = 2 Sum = 3
i = 3 number = 3 Sum = 6
Average = 2.00

Group Size = 4
i = 1 number = 1 Sum = 1
i = 2 number = 2 Sum = 3
i = 3 number = 3 Sum = 6
i = 4 number = 4 Sum = 10
Average = 2.50

这是我的意见:

2 1 2
3 1 2 3
4 1 2 3 4

1 个答案:

答案 0 :(得分:0)

不要为一堆数字做一个大fscanf。

阅读:第一个数字是集团规模。

抓住这个数字,然后尝试循环,抓住每个下一个数字。

例如,您文件中的第一个数字是2.说出来。现在,取下两个数字,然后完成整个

i = 1 number = 1 Sum = 1

的事情。

您的平均值是最后的总和除以您的小组大小。

现在洗涤并重复直至EOF。

HTH