不管我怎麼看到這個問題,我一直得到的答案是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;
不管我怎麼看到這個問題,我一直得到的答案是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;
讓我們在每次迭代後看到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
當i == 1
添加0
到n
,所以n == 0
。
當i == 2
添加0
和1
到n
,所以n == 0 + 0 + 1 == 1
。
當i == 3
添加0
,1
,2
到n
,所以n == 1 + 0 + 1 + 2 == 4
。
當i == 4
添加0
,1
,2
,3
到n
,所以n == 4 + 0 + 1 + 2 + 3 == 10
。
當i == 5
添加0
,1
,2
,3
,4
到n
,所以n = 10 + 0 + 1 + 2 + 3 + 4 == 20
如果你只得到了10,你要麼錯過了外循環的最後一次迭代(因爲10
是4後的結果迭代),或者您忘記了您正在添加之前迭代中累積的內容(因爲最後一次迭代將總數增加10
)。
在調試器中逐行執行代碼,同時監視變量及其值。 –
順便說一下,外循環的最後迭代本身會將'10'('0 + 1 + 2 + 3 + 4')加到'n'。 –
@Someprogrammerdude感謝關於監視變量的建議。我一定會使用它。並感謝您的知識! – jCheon