/*测试平均问题修订#1:编写一个读取相同数据的程序 文件如上所述,还计算最小和最大测试分数,如下 以及这两个测试的编号。 (例如,如果考试成绩 文件中的分数分别为 70、85、99、67 和 83,则测试 #4 的最低测试分数为 67,测试 #3 的最高测试分数为 99。)让您的程序打印出以下内容 信息显示到屏幕上。 */
#include <stdio.h>
int main(int argc, char const *argv[])
{
int num, start;
int num_test, score, max=0, min=0, maxi, mini;
FILE*ifp, *ofp;
ifp = fopen("test.in.txt", "r");
ofp = fopen("test.max.txt", "w");
fscanf(ifp,"%d", &num);
for ( start = 1; start <= num; start++)
{
fscanf(ifp,"%d %d", &num_test, &score);
fprintf(ofp,"Test: %d score: %d \n", num_test, score);
if (score > max)
{
max = score;
maxi = num_test;
}
if (score < min)
{
min = score;
mini = num_test;
}
}
fprintf(ofp,"\n\nMax = Test:%d Score: %d\n",maxi, max);
fprintf(ofp,"\nMin = Test:%d Score: %d\n",mini, min);
fclose(ifp);
fclose(ofp);
return 0;
}
最佳答案
这是初始化的问题。您需要根据算法将 max
初始化为可能的最低值(这纯粹是您做到的),并将 min
初始化为可能的最高值(您未能做到这一点) .
初始化 min
id 的安全选择是相应数据类型可能的最高值。
对于 int
,该值可能是 2^32-1(如果 int
以 32 位表示)。
如果您不想处理巨大的数字,则应该分析您的问题,以了解可能的最大值。这是比较危险的,因为问题的数量可能会改变,然后算法可能会失败。
<小时/>另一种方法是分两步查找值 - 这可能需要更长的时间,但仍然安全。
第 1 步:找到最大值。
第2步:初始化min
= max
,然后求最小值。
关于c - 如何打印数据中的最小值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56697805/