2017-10-07 5 views
0

この問題がどのように表示されても、私は答えが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; 
+1

変数とその値を監視しながら、デバッガで1行ずつコードをステップ実行します。 –

+1

ちなみに、外側ループの最後の反復だけでは、それ自体が 'n 'に' 10 + '(' 0 + 1 + 2 + 3 + 4)'を追加します。 –

+0

@Someprogrammerdude変数の監視に関する助言をありがとう。私は間違いなくそれを使用します。あなたの知識に感謝します! – jCheon

答えて

2

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 
2

あなたはn0を追加し、そうn == 0i == 1

あなたはn01を追加し、そうn == 0 + 0 + 1 == 1i == 2

あなたが01nから2、そうn == 1 + 0 + 1 + 2 == 4を追加i == 3

あなたが012nから3、そうn == 4 + 0 + 1 + 2 + 3 == 10を追加i == 4

あなたが唯一の10を得た場合10は4の後の結果であるので、あなたはどちらかの外側のループ(の最後の繰り返しを逃した

のでn = 10 + 0 + 1 + 2 + 3 + 4 == 20

n01234を追加 i == 5前回の反復で蓄積したものに追加していることを忘れています(最後の反復では合計で 10が追加されています)。

+0

ありがとうBarmar!したがって、内側のループは0からiに増加し、nに加算されます。わかりました!この視覚的な助けをありがとう – jCheon

+0

'n = n + j'はどう思いますか?あなたは外側のループを通して 'n'が毎回' 0'に設定されると思いましたか? – Barmar

+0

これは私の考えだった。 I = 1、n = 0の I = 2、N = 0 + 1 I = 3、N = 1 + 2 I = 4、N = 3 + 3 I = 5、N = 6 + 4 = 10 私は0から私が10を得ることを続けたループをしなかった。 – jCheon

関連する問題