找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1817|回复: 15
打印 上一主题 下一主题
收起左侧

新手学c51单片机编程有个疑问?求各位老师给小弟一点指导,谢谢

[复制链接]
跳转到指定楼层
楼主
ID:404479 发表于 2018-9-30 18:51 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
首先,程序第一步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, 下载次数: 16)

Screenshot_20180930-103623.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:378182 发表于 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
回复

使用道具 举报

板凳
ID:277374 发表于 2018-9-30 20:58 | 只看该作者
1+....100=5050,那么100+....1=5050同样是成立的啊。0+100,100+99,199+98,看到没?加号后边的数是从100一直减小到1的。明白了么?程序计算过程正好与打印信息反着的
回复

使用道具 举报

地板
ID:310519 发表于 2018-9-30 21:34 | 只看该作者
不知道你想表达什么。

1怎么来的?

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

当减到 i =2 时, i = i - 1 =1, 就是这么来的......
回复

使用道具 举报

5#
ID:315599 发表于 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.+
回复

使用道具 举报

6#
ID:315599 发表于 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中打印的????
回复

使用道具 举报

7#
ID:277550 发表于 2018-10-1 01:58 | 只看该作者

~~~~~~~~~~~~~
为何不是呢,把每一步的s打印出来,和i也打印出来,对比就知道了
回复

使用道具 举报

8#
ID:187614 发表于 2018-10-1 07:06 | 只看该作者
单步调试一下,什么都明白了,别想像了。
回复

使用道具 举报

9#
ID:386381 发表于 2018-10-1 08:39 来自手机 | 只看该作者
这个确实有点绕,仿真调试一下,一步一步来
回复

使用道具 举报

10#
ID:404576 发表于 2018-10-1 09:56 | 只看该作者
循环的判断条件是i>0,当i=1时进入最后一次的循环,此时注意是先进行s=s+i,再进行i=i-1,故前面s=0+100+99+....+1
回复

使用道具 举报

11#
ID:404479 发表于 2018-10-1 13:04 来自手机 | 只看该作者
hbnpmw 发表于 2018-9-30 20:58
1+....100=5050,那么100+....1=5050同样是成立的啊。0+100,100+99,199+98,看到没?加号后边的数是从100 ...

谢谢你,我弄懂了!
回复

使用道具 举报

12#
ID:404479 发表于 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+ ...

谢谢,我懂了!
回复

使用道具 举报

13#
ID:404479 发表于 2018-10-1 13:05 来自手机 | 只看该作者
diy1997 发表于 2018-9-30 21:34
不知道你想表达什么。

1怎么来的?

谢谢你
回复

使用道具 举报

14#
ID:404479 发表于 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+.. ...

谢谢你
回复

使用道具 举报

15#
ID:404479 发表于 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+.. ...

谢谢你
回复

使用道具 举报

16#
ID:404479 发表于 2018-10-1 13:07 来自手机 | 只看该作者
谢谢大家,你们真的一说,我全懂了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表