0

我写了这段代码,里面有t测试用例,每个测试用例都会输入 3 位数字。我希望这个程序识别这三个输入中的最小元素,然后打印最小元素。我应该怎么办?

int main()
{
    int t;
    cin>>t;
    while(t--)
    {
       for(int i=0;i<3;i++)
       {
           int n;
           cin>>n;
       }
    }
    return 0;
}
4

2 回答 2

2

这是一个使用运行最小值查找最小值的示例:

#include <iostream>

int main()
{
    unsigned int test_case_quantity = 0U;
    std::cin >> test_case_quantity;
    while(test_case_quantity--)
    {
        char minimum;
        std::cin >> minimum;
        char digit;
        std::cin >> digit;
        if (digit < minimum) minimum = digit;
        std::cin >> digit;
        if (digit < minimum) minimum = digit;
        std::cout << "    minimum: " << minimum << "\n";
        std::cin.ignore(100000, '\n'); // Synchronize to next line.
    }
    return 0;
}

对于更健壮的程序,您可以添加对读取的字符实际上是数字的验证。

于 2021-08-04T18:43:26.200 回答
1

我们可以使用一个额外的变量 saysmall并且当我们输入第一个数字时,我们可以将第一个数字分配给 ,small在所有其他情况下,我们可以比较当前数字是否小于small,如果是则更新small。最后在循环之外,我们可以打印 small 的值,这就是我们的答案。

int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int small;
        for(int i=0;i<3;i++)
        {
            int n;
            cin>>n;
            if (i == 0)
                small = n;
            else {
                if (n < small)
                    small = n;
            }
        }
        cout<<"Smallest number is :" << small;
    }
    return 0;
}

输入 :

1
10 2 3

输出 :

Smallest number is :2

流程:首先将值 10 分配为小,然后对于下一个元素 2,我们比较 2 是否小于在这种情况下为 10 的小,然后将小重新分配给 2。然后将这个小与 3 进行检查,但是2 < 3,所以小值保持不变。

我假设只有整数值作为输入。

于 2021-08-04T18:59:49.993 回答