在C语言里,用来实现循环的结构化语句主要有三种,分别是for语句、while语句和do-while语句。它们都属于C标准规定的控制流语句,通过条件判断来决定是否重复执行某一段代码,从而避免使用goto这类破坏程序结构的跳转方式。

一、for循环语句
for语句是最常用的计数型循环结构,特别适合在已知循环次数的场景下使用。它的基本语法形式包含三个表达式:初始化部分、循环条件以及迭代操作,这三部分用分号隔开,整体写在关键字for后面的圆括号中。
下面这段代码演示了如何使用for语句打印数字1到5:
#include <stdio.h>
int main() {
int i;
// 初始化i=1,每次循环前判断i<=5,循环体结束后i自增
for (i = 1; i <= 5; i++) {
printf("当前数字:%dn", i);
}
return 0;
}
for循环的优点在于把循环的控制逻辑集中在一处,阅读代码时很容易看出起始值、结束条件和步长。如果需要在遍历数组或固定次数操作时,for比while更紧凑。缺点是当循环条件复杂或中途频繁break时,集中式的写法可能稍显拥挤。
二、while循环语句
while语句属于先判断条件再执行循环体的结构。只要括号中的表达式为真,就会反复执行大括号里的语句。它更适用于循环次数不明确、仅依赖某个动态条件的情形。
以下示例用while读取输入直到遇到负数:
#include <stdio.h>
int main() {
int num;
printf("请输入整数(负数结束):");
scanf("%d", &num);
// 每次循环开始前检查条件
while (num >= 0) {
printf("你输入了:%dn", num);
scanf("%d", &num);
}
return 0;
}
while循环的好处是语义直白,条件不满足就一次都不执行,符合很多业务逻辑的自然描述。但如果忘记在循环体内更新条件相关变量,容易造成死循环。因此写while时务必确认循环变量或状态会在某次执行后被改变。
三、do-while循环语句
do-while与while的区别在于,它先执行一次循环体,再判断条件是否继续。这保证了循环体至少运行一次,适合那些必须先做操作再验结果的场景,比如菜单交互。
示例代码如下:
#include <stdio.h>
int main() {
int choice;
do {
printf("1.开始 2.退出,请选择:");
scanf("%d", &choice);
} while (choice != 2); // 选2才退出
return 0;
}
do-while在需要“至少做一次”的任务里非常方便,例如输入校验。它的不足是代码结构不如for直观,条件写在后面,粗心的开发者可能漏看退出逻辑。在多层嵌套时,应谨慎使用以免降低可读性。
四、三种循环语句的对比
从结构化编程角度看,for、while、do-while都避免了goto带来的混乱,是C语言官方支持的实现重复执行的方式。它们可以互相改写,但选择合适的语句能提升代码清晰度。
| 语句 | 条件判断时机 | 最少执行次数 | 典型用途 |
|---|---|---|---|
| for | 循环前 | 0 | 已知次数遍历 |
| while | 循环前 | 0 | 条件驱动任务 |
| do-while | 循环后 | 1 | 先执行再判断 |
总结来说,C语言用来实现循环的结构化语句就是for、while和do-while。掌握它们的语法差异与适用边界,能帮助你写出更规范、更易维护的C程序。