该程序从用户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”,这是初始化所以是有另一种方法来编码吗?
答案 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;
}