この問題がどのように表示されても、私は答えが10になっています。プログラムを実行すると、答えは20になります。これを解決する方法は失われています。誰もが詳細を教えてくれますか?ありがとう! ps。 C++の最初のプログラミングクラス。for()for C++のネストされた
int n = 0;
for (int i = 1; i <= 5; i++)
for (int j = 0; j < i; j++)
n = n + j;
この問題がどのように表示されても、私は答えが10になっています。プログラムを実行すると、答えは20になります。これを解決する方法は失われています。誰もが詳細を教えてくれますか?ありがとう! ps。 C++の最初のプログラミングクラス。for()for C++のネストされた
int n = 0;
for (int i = 1; i <= 5; i++)
for (int j = 0; j < i; j++)
n = n + j;
iの各繰り返しの後にnを見てみましょう。 n =前の値n +総和0からi-1;
i=1 , n= 0
i=2 , n= 0+0+1=1
i=3, n= 1+0+1+2 =4
i=4, n= 4+0+1+2+3=10
i=5, n= 10+0+1+2+3+4 =20
あなたはn
に0
を追加し、そうn == 0
i == 1
。
あなたはn
に0
と1
を追加し、そうn == 0 + 0 + 1 == 1
i == 2
。
あなたが0
、1
、n
から2
、そうn == 1 + 0 + 1 + 2 == 4
を追加i == 3
。
あなたが0
、1
、2
、n
から3
、そうn == 4 + 0 + 1 + 2 + 3 == 10
を追加i == 4
。
あなたが唯一の10を得た場合10
は4の後の結果であるので、あなたはどちらかの外側のループ(の最後の繰り返しを逃した
のでn = 10 + 0 + 1 + 2 + 3 + 4 == 20
n
に
0
、
1
、
2
、
3
、
4
を追加
i == 5
前回の反復で蓄積したものに追加していることを忘れています(最後の反復では合計で
10
が追加されています)。
変数とその値を監視しながら、デバッガで1行ずつコードをステップ実行します。 –
ちなみに、外側ループの最後の反復だけでは、それ自体が 'n 'に' 10 + '(' 0 + 1 + 2 + 3 + 4)'を追加します。 –
@Someprogrammerdude変数の監視に関する助言をありがとう。私は間違いなくそれを使用します。あなたの知識に感謝します! – jCheon