嘿伙计们,我有考试测试for循环的输出。但我似乎没有得到它如何输出11?
public void button1_Click(object sender, EventArgs e)
{
int i;
for (i = 1; i <= 10; i += 2)
{
}
MessageBox.Show("The number is " + i);
}
}
以前我认为它代表1 + 3 + 5 + 7 + 9,但答案不是11。 任何人都可以帮我解释输出如何变成11?它没有任何意义。
答案 0 :(得分:4)
根本不清楚你的期望是什么,但看看会发生什么:
i
从1. 1开始小于或等于10,因此它进入循环体
i
增加2 i
现在具有值3. 3小于或等于10,因此它进入循环体
i
增加2 i
现在具有值5. 5小于或等于10,因此它进入循环体
i
增加2 i
现在具有值7. 7小于或等于10,因此它进入循环体
i
增加2 i
现在具有值9. 9小于或等于10,因此它进入循环体
i
增加2 i
现在有值11. 11 不小于或等于10,所以循环终止1
的值 - 它仍然是11 答案 1 :(得分:3)
循环的最后一次迭代是i = 9
。循环终止于i += 2
,它将为您提供i = 11
。
答案 2 :(得分:1)
基本上你的循环由于迭代结果的方式而无法终止。
您对i = 1
的价值。
问题是你放了i += 2
。
这会导致问题的原因是因为它会像你这样经历所有的值:
i = 1
:i <= 10
循环失败将继续。i = 3
:您的i <= 10
仍然不符合条件,循环迭代仍然失败。i = 5
:您的i <= 10
未达成,但循环继续失败。i = 7
:您的i <= 10
未遇到问题仍然失败,循环将继续。i = 9
:您的i <= 10
仍然不符合您的条件,但仍然失败。由于最后一次迭代失败,它实际上又运行了一次。如果你试图使循环运行一定次数,你将不得不使用更简洁的数学表示来正确迭代。它不会在期望的次数内平衡i <= 10
,因此会导致一次额外的迭代。
但这就是为什么它是11,因为你的最后一个值无法满足条件。
现在,如果你想要循环五次,你需要这样的东西:
int i;
for(i = 1, i <= 5, i +=1 );
你也可以这样做:
int i;
for(i = 5, i <= 20, i += 5);
我不确定这是不是你最初的目标,但是希望这会有所帮助。我可能会添加错误,但希望能指出正确的方向。
答案 3 :(得分:0)
for
循环在i
处开始1
,并不断向2
添加i
,在i
大于{{}时停止1}}。这种情况首次发生在10
,因此循环退出且i == 11
仍为i
。
答案 4 :(得分:0)
如果您将消息框放在循环中:
int i;
for (i = 1; i <= 10; i += 2)
{
MessageBox.Show("The number is " + i);
}
然后你会得到五个消息框,其值为1,3,5,7和9。
由于消息框位于循环之后,您将获得一个消息框,其中包含变量在循环后的值,即11。