当前位置: 首页 > news >正文

C语言---循环结构

文章目录

  • 1. while 循环
  • 2. do...while 循环
  • 3. for 循环
  • 4. 循环控制语句
    • 4.1、break 语句
    • 4.2、continue 语句
    • 4.3、goto 语句
  • 5. 无限循环
  • 如何选择循环
  • 总结

一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。循环结构是编程中用于重复执行某段代码的强大工具。C语言提供了三种主要的循环结构:for 循环、while 循环和 do…while 循环。

1. while 循环

while 循环会在条件为真时反复执行循环体内的代码。它先判断条件,再决定是否执行。
语法:

while (condition) {// 要重复执行的代码(循环体)
}

执行流程:
1、判断 condition 是否为真(非零)。
2、如果为真,执行循环体内的语句。
3、执行完毕后,再次回到第1步判断条件。
4、如果条件为假(零),则退出循环,执行后续代码。

示例:打印数字 1 到 5

#include <stdio.h>int main() {int i = 1; // 初始化计数器while (i <= 5) { // 循环条件printf("%d\n", i);i++; // 更新计数器}return 0;
}

输出:

1
2
3
4
5

特点: 如果初始条件就不满足,循环体一次都不会执行。

2. do…while 循环

do…while 循环会先执行一次循环体,然后再判断条件。这意味着循环体至少会执行一次。
语法:

do {// 要重复执行的代码(循环体)
} while (condition);

执行流程:
1、先执行一次循环体内的语句。
2、然后判断 condition 是否为真。
3、如果为真,再次执行循环体。
4、如果为假,则退出循环。
示例:验证用户输入

#include <stdio.h>int main() {int number;do {printf("请输入一个正整数: ");scanf("%d", &number);} while (number <= 0); // 如果输入不满足条件,则继续循环提示输入printf("你输入的是: %d\n", number);return 0;
}

特点: 无论条件如何,循环体至少执行一次。

3. for 循环

for 循环是最常用、最紧凑的循环,它将初始化、条件判断和计数器更新都写在一行。
语法:

for (initialization; condition; update) {// 要重复执行的代码(循环体)
}

1、initialization(初始化):循环开始前执行一次,通常用于初始化计数器。
2、condition(条件):每次循环前都会检查,为真则继续循环。
3、update(更新):每次循环体执行完毕后执行,通常用于更新计数器。
执行流程:
1、执行 initialization(仅一次)。
2、检查 condition。
3、如果条件为真,执行循环体。
4、执行 update。
5、回到第2步。
示例:打印数字 1 到 5

#include <stdio.h>int main() {for (int i = 1; i <= 5; i++) {printf("%d\n", i);}return 0;
}

输出:

1
2
3
4
5

特点: 结构清晰,特别适合已知循环次数的场景。

4. 循环控制语句

控制语句描述
break语句终止循环或 switch 语句,程序流将继续执行紧接着循环或 switch 的下一条语句。
continue 语句告诉一个循环体立刻停止本次循环迭代,重新开始下次循环迭代。
goto 语句将控制转移到被标记的语句。但是不建议在程序中使用 goto 语句。

4.1、break 语句

作用:立即终止整个循环,跳出循环体,执行循环后面的代码。

示例:在找到所需元素后提前退出循环。

for (int i = 1; i <= 10; i++) {if (i == 5) {break; // 当 i 等于 5 时,终止循环}printf("%d\n", i);
}
// 输出: 1 2 3 4

4.2、continue 语句

作用:跳过本次循环中剩余的语句,直接进入下一次循环的条件判断(for 循环会先执行 update 部分)。

示例:跳过某些不需要处理的情况。

for (int i = 1; i <= 5; i++) {if (i == 3) {continue; // 跳过 i=3 这次的打印}printf("%d\n", i);
}
// 输出: 1 2 4 5

4.3、goto 语句

goto语句是无条件跳转,慎用。
语法:

goto label; // 跳转到标签处// ... 其他代码 ...label: // 标签定义// 要执行的代码

5. 无限循环

有时我们需要创建一个永不停止的循环(例如服务器的主循环),可以通过以下方式实现:
使用 while:

while (1) { // 条件永远为真// 循环体
}

使用 for:

for (;;) { // 三个表达式都省略// 循环体
}

在无限循环中,通常使用 break 语句在满足某个条件时退出。

如何选择循环

1、for 循环:最常用。当你事先知道循环需要执行多少次时,它是首选。例如,遍历数组、重复操作n次。

2、while 循环:当你不确定要循环多少次,而是根据某个条件是否满足来决定时使用。例如,读取文件直到末尾,等待用户输入有效值。

3、do…while 循环:当你希望循环体至少执行一次,然后再根据条件判断是否继续时使用。例如,显示菜单并等待用户选择。

总结

循环类型特点适用场景
while先判断,后执行(可能执行0次)条件驱动,循环次数未知
do…while先执行1次,后判断(至少执行1次)需要至少执行一次的情况
for结构紧凑,集初始化、判断、更新于一体计数驱动,循环次数已知

文章转载自:

http://eu99tNm1.dpsyr.cn
http://EiXtf0YE.dpsyr.cn
http://fBNeKDYs.dpsyr.cn
http://GNQn9XTn.dpsyr.cn
http://pxitSuDB.dpsyr.cn
http://arZgcbvH.dpsyr.cn
http://K4DBHl4V.dpsyr.cn
http://npikqk1O.dpsyr.cn
http://P4DqmPrz.dpsyr.cn
http://gbm32zpj.dpsyr.cn
http://wtEMCWEY.dpsyr.cn
http://aaMKJi1Z.dpsyr.cn
http://W8aNWxjK.dpsyr.cn
http://hYPI9hON.dpsyr.cn
http://cMPPNDOm.dpsyr.cn
http://IOQ1vHmy.dpsyr.cn
http://G9r0yFLd.dpsyr.cn
http://SwafAQLU.dpsyr.cn
http://krynBgWC.dpsyr.cn
http://lLYDk5Fz.dpsyr.cn
http://0aWCd7Iv.dpsyr.cn
http://XEYhItPp.dpsyr.cn
http://BDSZRB7o.dpsyr.cn
http://3U9fwNfG.dpsyr.cn
http://6jLgtDnW.dpsyr.cn
http://sDv5A6Fy.dpsyr.cn
http://HMP4quCz.dpsyr.cn
http://grwFsjZ9.dpsyr.cn
http://O4Y4xQD8.dpsyr.cn
http://LHE3qa1h.dpsyr.cn
http://www.dtcms.com/a/383592.html

相关文章:

  • 【底层机制】emplace_back 为什么引入?是什么?怎么实现的?怎么正确用?
  • 基于LSTM深度学习的电动汽车电池荷电状态(SOC)预测
  • 机器学习周报十三
  • 记录word插入文字/图片,生成新word并转为pdf
  • 【ROS2】Concept(Basic)
  • Level Set(水平集)算法——形象化讲解
  • 45.sed,awk详解及相关案例
  • 聊一下贪心算法
  • 磁共振成像原理(理论)7:射频回波 (RF Echoes)-双脉冲回波
  • Python实战:实现监测抖音主播是否开播并录屏
  • MySQL中InnoDB索引使用与底层原理
  • 全网首款数学建模交互AI应用-持续更新
  • 飞牛NAS本地挂载夸克网盘、接入飞牛影视教程
  • 音视频学习(六十五):fmp4
  • 【STM32】串口的阻塞、中断、DMA收发
  • win10系统 文件夹被占用无法删除
  • LawGPT:基于中文法律知识的大模型
  • 手搓多模态-10 旋转位置编码的原理和实现
  • C# --- dispose机制与using关键字
  • HakcMyVM-Aurora
  • Flask学习笔记(一)
  • MobaXterm软件访问ZYNQ板卡的Linux系统
  • 基于vLLM与YOLO的智能图像分类系统
  • 标准CAN帧介绍
  • 蚂蚁矿机S19 Pro 104T技术参数解析及性能分析
  • 一小时解决RabbitMQ面试题
  • HBM4量产就绪|2026年AI与数据中心新标配
  • 细粒度图像分类的可解释性Finer-CAM
  • C++中多线程core的问题分析和总结
  • scrapy框架-day02