不管我怎么看到这个问题,我一直得到的答案是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