如何打印用户在C ++中输入的10个数字的最小值

时间:2017-11-18 20:16:08

标签: c++

该程序从用户10读取整数并打印最小的数字。 所以这是我的代码示例:

#include <iostream>
using namespace std;
int main () {
int n,min=1;
for (int i = 0 ; i<10 ; i++){
    cin>>n;
    if (n<min)
        min = n;

}
cout <<min;

}

所以这是我的问题:为什么我打印“1”如果我从2到11输入你可能会说因为if条件什么都不会执行所以它会打印“1”,这是初始化所以是有另一种方法来编码吗?

2 个答案:

答案 0 :(得分:1)

要从值计算min,不应初始化变量。在开始循环之前,假设你拥有的第一个值是min。

cin>>n;
min=n;

为了与我们想要10个数字的最小值这一事实保持一致,我们需要迭代一次。

为此,只需更改

即可
for (int i = 0 ; i<10 ; i++)

for (int i = 0 ; i<9 ; i++)

答案 1 :(得分:0)

您输出1,因为这是您初始化min的值,如果您输入的所有值都大于1,则循环永远不会更新min

您需要将min初始化为输入的第一个值:

#include <iostream>

int main () {
    int n, min;
    for (int i = 0; i < 10; i++) {
        std::cin >> n;
        if ((n < min) || (i == 0))
            min = n;
    }
    std::cout << min;
    return 0;
}

或者:

#include <iostream>

int main () {
    int n, min;
    cin >> min;
    for (int i = 1; i < 10 ; i++) {
        std::cin >> n;
        if (n < min)
            min = n;
    }
    std::cout << min;
    return 0;
}

或者,将值放在数组中并使用std::min_element()

#include <iostream>
#include <algorithm>

int main () {
    int arr[10];
    for (int i = 0; i < 10; i++) {
        std::cin >> arr[i];
    }
    std::cout << *std::min_element(arr,  arr+10);
    return 0;
}