我的任务是编写一个代码,从txt文件数组中读取数字并查找max,min,sum等。(200)数字的格式如下: 3.23 19.398 98.73 2.1 ... 对不起,如果代码有点混乱,我一直试图拼凑很多不同的教程无济于事。我基本上需要知道如何让代码顺序读取值,并拉出最大/最小值并继续通过数组。 (并找到一路上的总和)如何正确格式化?
<svg class="social-icon" style="width:24px;height:24px" viewBox="0 0 24 24">
<path d="M17.71,9.33C18.19,8.93 18.75,8.45 19,7.92C18.59,8.13 18.1,8.26 17.56,8.33C18.06,7.97 18.47,7.5 18.68,6.86C18.16,7.14 17.63,7.38 16.97,7.5C15.42,5.63 11.71,7.15 12.37,9.95C9.76,9.79 8.17,8.61 6.85,7.16C6.1,8.38 6.75,10.23 7.64,10.74C7.18,10.71 6.83,10.57 6.5,10.41C6.54,11.95 7.39,12.69 8.58,13.09C8.22,13.16 7.82,13.18 7.44,13.12C7.81,14.19 8.58,14.86 9.9,15C9,15.76 7.34,16.29 6,16.08C7.15,16.81 8.46,17.39 10.28,17.31C14.69,17.11 17.64,13.95 17.71,9.33M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z" />
</svg>
我将非常感谢任何帮助,我已经尝试利用所有可能的资源(youtube,其他stackoverflow问题)几个小时,但没有明确规定如何格式化数组中的调用,读取和从中获取值。
答案 0 :(得分:1)
有很多问题:
你可能想要这个:
#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;
}
答案 1 :(得分:0)
您的代码存在一些问题:
float
但将数据存储为int
open
两次文件;
while
!= EOF
)可能导致文件中的无限循环包含无法解析为浮点数的内容。使用== 1
更安全。确定程序可能是:
#include <stdio.h>
#include <stdlib.h>
#include <float.h>
int main(void)
{
float newnum;
float max = -FLT_MAX;
float min = FLT_MAX;
FILE *fpdata;
if((fpdata = fopen("data.txt", "r")) == 0)
{
printf("File not found. Abort!");
exit(-1);
}
while(fscanf(fpdata,"%f", &newnum) == 1)
{
printf("%f\n", newnum);
if(newnum > max) max = newnum;
if(newnum < min) min = newnum;
}
printf("The largest number is %f\n", max);
printf("The smallest number is %f\n", min);
fclose(fpdata);
return 0;
}