2017-10-07 53 views
0

不管我怎麼看到這個問題,我一直得到的答案是10.當我運行該程序時,答案給了我20.我失去了如何解決這個問題。任何人都可以幫助我更詳細地瞭解?謝謝! PS。第一個編程類在c + +。嵌套()在c + +

int n = 0; 

for (int i = 1; i <= 5; i++) 
    for (int j = 0; j < i; j++) 
     n = n + j; 
+1

在調試器中逐行執行代碼,同時監視變量及其值。 –

+1

順便說一下,外循環的最後迭代本身會將'10'('0 + 1 + 2 + 3 + 4')加到'n'。 –

+0

@Someprogrammerdude感謝關於監視變量的建議。我一定會使用它。並感謝您的知識! – jCheon

回答

2

讓我們在每次迭代後看到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

i == 1添加0n,所以n == 0

i == 2添加01n,所以n == 0 + 0 + 1 == 1

i == 3添加012n,所以n == 1 + 0 + 1 + 2 == 4

i == 4添加0123n,所以n == 4 + 0 + 1 + 2 + 3 == 10

i == 5添加01234n,所以n = 10 + 0 + 1 + 2 + 3 + 4 == 20

如果你只得到了10,你要麼錯過了外循環的最後一次迭代(因爲10是4後的結果迭代),或者您忘記了您正在添加之前迭代中累積的內容(因爲最後一次迭代將總數增加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