标题: 新手学c51单片机编程有个疑问?求各位老师给小弟一点指导,谢谢 [打印本页]

作者: tanghao8887    时间: 2018-9-30 18:51
标题: 新手学c51单片机编程有个疑问?求各位老师给小弟一点指导,谢谢
首先,程序第一步a>0,于是就循环,当程序走到s=s+i,也就是s=0+100=100,相当于现在s=100了,然后执行下一段,也就是i=i-1,也就是i=99了,那么,程序又一个循环,又到s=s+i,那么,现在的i值刚被减过一次了,就是99了,刚刚的s加过一次也就是100了,那么我想不明白为什么不是第一次,0+100...第二次,100+99,第三次199+98就这样一直持续加到i=0退出循环,搞不懂为什么会出现1+....100=5050,这个1是怎么来的?各位大神,能帮我详细的分析一下么!谢谢了!

Screenshot_20180930-103623.png (74.18 KB, 下载次数: 33)

Screenshot_20180930-103623.png

作者: znz43a    时间: 2018-9-30 20:41
i=i-1,当减至i=1时,循环依然执行,s=s+1。再执行i=i-1时,i=0跳出循环。
所以s=0+100+99+98+........+2+1=5050

作者: hbnpmw    时间: 2018-9-30 20:58
1+....100=5050,那么100+....1=5050同样是成立的啊。0+100,100+99,199+98,看到没?加号后边的数是从100一直减小到1的。明白了么?程序计算过程正好与打印信息反着的
作者: diy1997    时间: 2018-9-30 21:34
不知道你想表达什么。

1怎么来的?

i =100;  当i>0时,会一直执行 i =i -1;

当减到 i =2 时, i = i - 1 =1, 就是这么来的......
作者: 丨释然丶居士灬    时间: 2018-9-30 23:24
起初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.+
作者: 丨释然丶居士灬    时间: 2018-9-30 23:25
起初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中打印的????
作者: devcang    时间: 2018-10-1 01:58

~~~~~~~~~~~~~
为何不是呢,把每一步的s打印出来,和i也打印出来,对比就知道了
作者: 51Lovers    时间: 2018-10-1 07:06
单步调试一下,什么都明白了,别想像了。
作者: 文凤轩    时间: 2018-10-1 08:39
这个确实有点绕,仿真调试一下,一步一步来
作者: David---xin    时间: 2018-10-1 09:56
循环的判断条件是i>0,当i=1时进入最后一次的循环,此时注意是先进行s=s+i,再进行i=i-1,故前面s=0+100+99+....+1
作者: tanghao8887    时间: 2018-10-1 13:04
hbnpmw 发表于 2018-9-30 20:58
1+....100=5050,那么100+....1=5050同样是成立的啊。0+100,100+99,199+98,看到没?加号后边的数是从100 ...

谢谢你,我弄懂了!
作者: tanghao8887    时间: 2018-10-1 13:04
znz43a 发表于 2018-9-30 20:41
i=i-1,当减至i=1时,循环依然执行,s=s+1。再执行i=i-1时,i=0跳出循环。
所以s=0+100+99+98+........+2+ ...

谢谢,我懂了!
作者: tanghao8887    时间: 2018-10-1 13:05
diy1997 发表于 2018-9-30 21:34
不知道你想表达什么。

1怎么来的?

谢谢你
作者: tanghao8887    时间: 2018-10-1 13:05
丨释然丶居士灬 发表于 2018-9-30 23:25
起初s=s+i=100,i=i-1=99,下一次循环s=100+99,再下一次循环s=100+99+98,一直运行直到最后s=100+99+98+.. ...

谢谢你
作者: tanghao8887    时间: 2018-10-1 13:05
David---xin 发表于 2018-10-1 09:56
循环的判断条件是i>0,当i=1时进入最后一次的循环,此时注意是先进行s=s+i,再进行i=i-1,故前面s=0+100+99+.. ...

谢谢你
作者: tanghao8887    时间: 2018-10-1 13:07
谢谢大家,你们真的一说,我全懂了!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1