谢谢大家,你们真的一说,我全懂了! |
David---xin 发表于 2018-10-1 09:56 谢谢你 |
丨释然丶居士灬 发表于 2018-9-30 23:25 谢谢你 |
diy1997 发表于 2018-9-30 21:34 谢谢你 |
znz43a 发表于 2018-9-30 20:41 谢谢,我懂了! |
hbnpmw 发表于 2018-9-30 20:58 谢谢你,我弄懂了! |
循环的判断条件是i>0,当i=1时进入最后一次的循环,此时注意是先进行s=s+i,再进行i=i-1,故前面s=0+100+99+....+1 |
这个确实有点绕,仿真调试一下,一步一步来 |
单步调试一下,什么都明白了,别想像了。 |
~~~~~~~~~~~~~ 为何不是呢,把每一步的s打印出来,和i也打印出来,对比就知道了 |
起初s=s+i=100,i=i-1=99,下一次循环s=100+99,再下一次循环s=100+99+98,一直运行直到最后s=100+99+98+...+2+1,你把这一大串式子倒过来看s=1+2+...+99+100是不是图中printf中打印的???? |
起初s=s+i=100,i=i-1=99,下一次循环s=100+99,再下一次循环s=100+99+98,一直运行直到最后s=100+99+98+...+2+1,你把这一大串式子倒过来看s=1+2+...+99.+ |
不知道你想表达什么。 1怎么来的? i =100; 当i>0时,会一直执行 i =i -1; 当减到 i =2 时, i = i - 1 =1, 就是这么来的...... |
1+....100=5050,那么100+....1=5050同样是成立的啊。0+100,100+99,199+98,看到没?加号后边的数是从100一直减小到1的。明白了么?程序计算过程正好与打印信息反着的 |
i=i-1,当减至i=1时,循环依然执行,s=s+1。再执行i=i-1时,i=0跳出循环。 所以s=0+100+99+98+........+2+1=5050 |