使用for循环最少10个数字

时间:2018-01-12 21:28:50

标签: c++

我在这段代码中有一个简单的问题:

#include <iostream>
using namespace std;
int main () {
int x, mn = 10000;
for (int i = 0 ; i<10 ; i++)
{
     cin>>x;
    if (x<mn)
        mn=x;

}
cout << mn;
return 0;
} 

为什么输出最小值虽然如果我们认为用户不会输入大于10000的数字,情况是否为真?
我的逻辑如果输入是:例如1,2,3,4,5,6,7,8,9,10:

1<mn 
okay now mn =1; 
2<mn 
okay now mn =2; 
........ and so on, til mn = 10;

为什么不输出10(最后一个值)?
如果你帮忙,我会很感激的。
PS:我还需要一个建议,以便更好地理解代码作为初学者运行的方式。

2 个答案:

答案 0 :(得分:3)

  

为什么不输出10(最后一个值)?

您对该计划的理解不正确。

你说:

1<mn 
okay now mn =1; 

这是正确的。

2<mn 
okay now mn =2; 

这是不正确的。目前,mn的值为1。因此2 < mn不是真的。如果您不更改mn的值,只需打印x即可。

for (int i = 0 ; i<10 ; i++)
{
    cin>>x;
    if (x<mn)
      cout << x << endl;

}

答案 1 :(得分:1)

我已经对代码进行了评论,以帮助您理解每一行。

#include <iostream>
using namespace std;
int main () {       // Start execution
int x, mn = 10000;  // Place a value of 10,000 into minimum - higher than the supposed maximum value that can be entered.  (This is not a good number to use)

for (int i = 0 ; i<10 ; i++)  // Loop 10 times
{
    cin>>x;    // Input a value into x
    if (x<mn)  // if x is less than mn (first loop it is 10,000) then...
        mn=x;  // Assign x into mn.

}
cout << mn;    // Output mn.  If no minimum was entered or found, this prints 10000
return 0;      // return 0
}