2017-10-07 94 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