如何从未知的数字中打印2个最小的数字

时间:2018-12-23 02:20:25

标签: c

在用C编写代码时需要帮助

我需要编写一个从用户那里获取未知数字(最多INT_MAX)并从中打印出最小的两个数字的代码。

有人可以帮助我提供代码吗?在网上搜索了大约一个小时。

到目前为止,我最好的是:

#include <stdio.h>
#include <limits.h>

void main()
{
    int num, min1 = INT_MAX, min2 = INT_MAX;
    int temp1 = 0, temp2 = 0;

    printf("Plese enter your numbers:\n");

    do
    {
        scanf("%d\n", &num);
        temp1 = num;
        temp2 = num;

        if ((temp1 < min1) && (temp1 > 0));
        {
            min1 = num;
        }

        if ((temp2 < min2) && (temp2 > 0))
        {
            min2 = temp2;
        }

    } while (num != 0);

    printf("%-5d%5d\n\n", min1, min2);
}

1 个答案:

答案 0 :(得分:1)

#include <limits.h>
#include <stdio.h>

int main()
{
    int m1, m2, num;
    m1 = m2 = INT_MAX;
    while(scanf("%d", &num) == 1)
    {
        if(num < m1)
        {
            m2 = m1;
            m1 = num;
        }
        else if(num < m2)
        {
            m2 = num;
        }
    }
    printf("%d and %d\n", m1, m2);
    return 0;
}

scanf("%d", &num);读取一个int并返回读取的成功参数的数量。因此,只要它读取一个int,它将继续循环。要退出循环,可以在终端中输入^X(EOF)。