我希望能够从名为numbers.txt的文本文件中扫描一行数字,然后在名为statistics.txt的文本文件中打印总和,最大数字和乘积。
numbers.txt中的数字看起来像:
1 2 3 4 5 6 7 8 9
目前,我已经找到了一种方法来分别找到文本文件中数字的总和和最大数量,正如你已经注意到的,我有2个while循环,这是不正确的。然而,我不知道如何找到总和和最大的数字没有2个单独的while循环。而且我根本不知道如何求出这些数字的乘积。
注意:两个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 = %dn", m);
fclose(filein);
return 0;
}
单个while
循环可以同时执行多个计算。例如,可以像这样将两个循环组合为一个
while(fscanf(filein, "%d", &a) == 1)
{
sum += a; // update the sum
if ( a > m ) // update the max
m = a;
}
还需要注意,您需要将m
初始化为INT_MIN。
要计算乘积,从1
的值开始,然后更新为*=
,类似于您对sum所做的操作。