我的任务是编写一段代码,从 txt 文件数组中读取数字并查找最大值、最小值、总和等。(200)个数字的格式如下: 3.23 19.398 98.73 2.1 ... 抱歉,如果代码有点困惑,我一直在尝试拼凑很多不同的教程,但无济于事。我基本上需要知道如何让代码按顺序读取值,并提取最大/最小值并继续遍历数组。 (并一路求和)我如何正确格式化它?
# include <stdio.h>
int main()
{
//char data[200];
int newnum;
int max = 0, min = 99999999999;
int i = 0;
int y[200];
//min=max=newnum;
FILE *fpdata = fopen("data.txt", "r");
if((fpdata = fopen("data.txt", "r")) == 0)
{
printf("File not found. Abort!");
exit(-1);
}
while(fscanf(fpdata,"%f", &y[i++]) != EOF);{
//for(i=0; i < 200; i++)
i--;
printf("i=%d \n", i);
//printf("\n%d%d\n", &y[i++], y);
if(newnum > max)
max = newnum;
if(newnum < min)
min = newnum;
}
printf("The largest number is %d\n", max);
printf("The smallest number is %d\n", min);
fclose(fpdata);
return 0;
}
任何帮助将不胜感激,我已经尝试利用所有可能的资源(youtube,其他 stackoverflow 问题)几个小时,但没有明确说明如何从文件中格式化数组中的调用,读取并从中提取值。
最佳答案
有很多问题:
您可能想要这个:
#include <stdio.h>
#include <stdlib.h> // include also stdlib.h
int main()
{
float newnum;
float max = 0, min = 99999999999; // use float type for float numbers
int i = 0;
FILE *fpdata; // callign fopen only once
if ((fpdata = fopen("data.txt", "r")) == 0)
{
printf("File not found. Abort!");
exit(-1);
}
while (fscanf(fpdata, "%f", &newnum) != EOF) { // removed extra ;
printf("i = %d, newnum = %f\n", i++, newnum); // reading into newnum
// correct format specifiers
if (newnum > max)
max = newnum;
if (newnum < min)
min = newnum;
}
printf("The largest number is %f\n", max); // correct format specifiers
printf("The smallest number is %f\n", min);
fclose(fpdata);
return 0;
}
尽管如此,仍有改进的空间。
这是首先将所有数据读取到 data
数组中的版本(data
是一个比 y
更好听的名字),然后执行计算:
#include <stdio.h>
#include <stdlib.h>
int main()
{
float max = 0, min = 99999999999;
float data[200];
FILE *fpdata;
if ((fpdata = fopen("input1.txt", "r")) == 0)
{
printf("File not found. Abort!");
exit(-1);
}
int nbofnumbers = 0;
while (fscanf(fpdata, "%f", &data[nbofnumbers]) != EOF)
{
nbofnumbers++;
}
for (int i = 0; i < nbofnumbers; i++)
{
printf("data[%d] = %f\n", i, data[i]);
if (data[i] > max)
max = data[i];
if (data[i] < min)
min = data[i];
}
printf("The largest number is %f\n", max);
printf("The smallest number is %f\n", min);
fclose(fpdata);
return 0;
}
关于c - 如何编写一个从文本文件读取数组并找到最大值和最小值的程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47134225/