c - 如何打印数据中的最小值?

标签 c

/*测试平均问题修订#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/

相关文章:

c - 如何在ubuntu上编译doom?

C: 链表节点的malloc (struct within struct)

c - 编译时找不到融合函数

c - C中的字符串操作

c - 如何知道用户按下了哪个键?

c - fscanf 如何将 20.20.2012 之类的日期导入一个变量?

c - 基数排序中的位函数

python - SWIG 函数不打印输出

c - 使用位掩码和 if 语句

c - 无法在 automake 步骤上构建 spice