2

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になる方法を誰かに説明してもらえますか?まったく意味がありません。

4

5 に答える 5

4

何を期待していたのかははっきりしていませんが、何が起こるかを見てください。

  • i1. 1は10以下であるため、ループ本体に入ります。
    • ループ本体は何もしません
    • ループ本体の終わりで、i2ずつ増加します
  • i現在、値は3です。3は10以下であるため、ループ本体に入ります。
    • ループ本体は何もしません
    • ループ本体の終わりで、i2ずつ増加します
  • i現在、値は5です。5は10以下であるため、ループ本体に入ります。
    • ループ本体は何もしません
    • ループ本体の終わりで、i2ずつ増加します
  • i現在、値は7です。7は10以下であるため、ループ本体に入ります。
    • ループ本体は何もしません
    • ループ本体の終わりで、i2ずつ増加します
  • i現在、値は9です。9は10以下であるため、ループ本体に入ります。
    • ループ本体は何もしません
    • ループ本体の終わりで、i2ずつ増加します
  • i現在、値は11です。11は10以上であるため、ループは終了します。
  • の値1が出力されます-まだ11です
于 2013-03-05T00:28:15.743 に答える
3

ループの最後の反復は、のときi = 9です。ループは終了します。i += 2これにより、が得られますi = 11

于 2013-03-05T00:27:37.723 に答える
1

基本的に、ループは結果を反復処理する方法が原因で終了できません。

のあなたの価値i = 1

問題はあなたが入れたことi += 2です。

これが問題を引き起こす理由は、次のようにすべての値を通過するためです。

  • i = 1i <= 10:ループの失敗は続行されます。
  • i = 3:まだ基準を満たしていないために失敗しi <= 10、ループはまだ繰り返されます。
  • i = 5:満たされていないために失敗しi <= 10、ループが続行されます。
  • i = 7:満たされていないために失敗しi <= 10、ループが続行されます。
  • i = 9i <= 10:まだあなたの基準を満たしていないために失敗します。

その最後の反復は失敗するため、実際には別の時間に実行されます。ループを特定の回数実行しようとする場合は、より簡潔な数学的表現を使用して正しく反復する必要があります。i <= 10必要な回数のバランスが取れていないため、 1回の追加の反復が発生します。

しかし、それが11である理由です。これは、最後の値が満たされた条件を満たしていないためです。

ここで、ループを5回実行する場合は、次のようにします。

int i;
for(i = 1, i <= 5, i +=1 );

次のようにすることもできます。

int i;
for(i = 5, i <= 20, i += 5);

それが異なる数字でのあなたの当初の目標であったかどうかはわかりませんが、うまくいけばそれが役立つでしょう。私は間違って追加したかもしれませんが、うまくいけば、それはあなたを正しい方向に向けます。

于 2013-03-05T00:37:25.797 に答える
0

メッセージボックスをループに配置した場合:

int i;
for (i = 1; i <= 10; i += 2)
{
  MessageBox.Show("The number is " + i);
}

次に、値が1、3、5、7、および9の5つのメッセージボックスが表示されます。

メッセージボックスはループの後にあるため、変数がループの後に持つ値、つまり11を含む単一のメッセージボックスを取得します。

于 2013-03-05T00:34:44.030 に答える
0

forループはiで始まり、1に追加2され続け、がより大きいiときに停止します。これはで初めて発生するため、ループは終了し、'sはまだです。i10i == 11i11

于 2013-03-05T00:28:06.527 に答える