从文本文件中扫描数字并查找总和,最大数量和产品

时间:2014-03-28 19:22:46

标签: c file

我希望能够从名为numbers.txt的文本文件中扫描一行数字,然后在名为statistics.txt的文本文件中打印总和,最大数字和产品。

numbers.txt中的数字如下所示:

1 2 3 4 5 6 7 8 9

目前,我已经找到了一种方法来分别找到文本文件中数字的总和和最大数量,因为您已经注意到我有2个while循环是不正确的。但是,我不知道如何在没有2个单独的while循环的情况下找到总数和最大数。同时我不知道如何找出数字的乘积。

注意:2个while循环单独工作,如果我取出其中一个,另一个工作

#include<stdio.h>

int main()
{
    int a, sum = 0, numbers, m;

    FILE *filein, *fileout;
    filein= fopen("numbers.txt", "r");
    fileout = fopen("statistics.txt", "w");

    //the sum part
    while(fscanf(filein, "%d", &a) == 1)
    {
        sum += a;
    }
    fprintf(fileout, "Sum = %d \n", sum);



    //the max part
    while(fscanf(filein, "%d", &numbers) > 0)
    {
        if(numbers > m)
        m = numbers;
    }
    fprintf(fileout,"Largest = %d\n", m);

    fclose(filein);
    return 0;
}

1 个答案:

答案 0 :(得分:1)

单个while循环可以同时执行多个计算。例如,您可以将两个循环组合成一个像这样的

while(fscanf(filein, "%d", &a) == 1)
{
    sum += a;      // update the sum

    if ( a > m )   // update the max
       m = a;
}

另请注意,您需要将m初始化为INT_MIN。

要计算产品,请使用1的值开头,并使用*=进行更新,类似于您对总和所做的操作。