C语言---循环结构

发布于:2025-09-15 ⋅ 阅读:(23) ⋅ 点赞:(0)


一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。循环结构是编程中用于重复执行某段代码的强大工具。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 结构紧凑,集初始化、判断、更新于一体 计数驱动,循环次数已知