循环结构
看清 for/while/do-while 的边界差异与跳出时机
按 空格/→ 演示下一步
全部页面点击任意一页,跳回舞台从这页播放
循环结构
看清 for/while/do-while 的边界差异与跳出时机
循环结构思维启发
上一页我们认识了循环长什么样,但更值得问的是:为什么编程语言要专门发明「循环」这个工具?答案藏在人类的本能里——重复是痛苦的,但结果是有用的。
每个工位做一件事,零件流过去到末端就是成品;工人不决定何时停,是传送带的计数信号决定
常用的三种循环语句
有了循环思维,还得落到具体语句。次数已知、未知、至少要执行一次——三种场景对应三种循环,怎么选才稳?
计划跑10圈=for,跑到累了就停=while,至少先跑1圈再决定要不要继续=do-while
循环嵌套
你已经能用 for 打印一排星星了。要打印 5×5 的方阵、遍历一个二维表格、枚举所有坐标对——单层循环已经不够用了。该让循环套循环上场。
找 3 栋 502:外层先定位楼号,内层再遍历房间号
异常出口语句
你在长队里找人,找到后直接走人——不会再排下去。点名时发现有人请假,跳过他继续点下一个。这些「提前改变节奏」的操作,对应循环里的两个异常出口:break 和 continue。
发现严重缺陷,break 像整条线紧急停工;小瑕疵,continue 像本件返工,下一件接着过
循环结构趣味编程
我们已经熟练掌握了 for、while 和 break/continue 这些工具——接下来把它们组合起来,去解决一些有趣的问题:打印漂亮的图案、算复杂的数学、做个小游戏。循环的乐趣,恰恰藏在这些组合里。
外层循环像搭一层新台阶,内层在这一层摆对应数量的方块
循环结构常见问题解析
前面学了三种循环语句和异常出口,但写循环时总有几个坑反复出现:要么多跑一圈,要么根本停不下来。这一页专门拆解循环结构最常见的问题。
圈数对应当前计数;忘喊停就死循环,圈数算差就 off-by-one
程序硬件实验范例
前面我们写的循环都在屏幕里跑。把同样的逻辑搬到单片机上,循环就成了硬件的心跳——每转一圈就真实地读一次传感器、推一次电机。
循环每转一圈=流水线一个节拍;IO 读写=工位动作;时序错位=产线拥堵
二级C考点解析之循环语句
上页看了三种循环的「长相」,但考试考的从来不是长相——而是给你一段循环代码,问「执行几次」或「输出什么」。这一页专门拆解二级C里循环部分的常见考点。
起点(初值)、步长(每次+几)、终点(含不含等号),三件事对齐才数对——差一个就差一个台阶
二级C考点解析之结构编程
前面我们专门啃下了循环语句这块硬骨头。但你有没有想过——为什么循环会和顺序、选择并称为三大结构?因为任何 C 程序本质上都是这三种结构的有机组合。
三种结构是三种基础积木,单入口单出口像卡扣只能按指定方向拼,模块化对应按图纸分步组装
本节要点
- ✓三种循环本质等价,选型取决于判断时机与计数需求
- ✓break 与 continue 只作用于最近一层循环
- ✓嵌套循环的时间复杂度是各层迭代次数的乘积
- ✓死循环必须搭配 break 等显式出口
- ✓差一错误(off-by-one)是循环头号 bug 来源
课后思考
先尝试自己回答,再展开参考答案;每道题都值得停一停。
参考答案三种循环适用场景不同:for 适合已知次数,while 适合条件驱动,do-while 保证至少执行一次。理论上它们可相互模拟,但语义表达力和代码可读性会显著下降。
参考答案do-while 更自然。输入流至少要先读一次才能判断是否遇到哨兵,先判后读会让逻辑分叉;while 需预读或读—判—读结构,稍显笨拙。
参考答案两条路径:①外层加标志位、内层跳出置位、外层再判;②内层抽成函数靠 return 直接跳出。代价是多一次判读、丧失内联性;Java 带标签 break 是第三条路。