前言

在C语言编程中,循环语句是实现程序重复执行、高效处理批量任务的核心语法,也是流程控制中仅次于分支语句的关键知识点。无论是数组遍历、数据计算、业务迭代,还是底层算法实现,都离不开while、do-while、for三大循环结构。

很多新手初学循环时,容易混淆三种循环的执行逻辑、适用场景,陷入死循环、循环条件错误、循环嵌套混乱等问题。本篇博客将从零到一系统精讲C语言循环语句,搭配可直接编译运行的实战代码、清晰文字版思维导图、高频避坑指南和综合实战案例,帮你彻底吃透循环本质,写出高效、简洁、无bug的循环代码,无论是笔试面试还是项目开发都能轻松应对。
(本文适合C语言初学者、备考计算机等级考试/笔试面试的同学,全文干货,建议点赞+收藏+关注,后续持续更新C语言进阶内容!)


一、C语言循环语句核心思维导图(文字版)

为了让大家快速构建循环知识体系,先梳理C语言循环语句知识框架,一目了然掌握所有核心考点:
C语言循环语句
├─ 循环基础
│  ├─ 循环定义:重复执行一段代码,满足条件终止
│  ├─ 循环三要素:初始化表达式、条件判断、更新表达式
│  └─ 循环分类:while循环、do-while循环、for循环
├─ 三大循环详解
│  ├─ while循环
│  │  ├─ 语法格式
│  │  ├─ 执行流程
│  │  ├─ 适用场景
│  │  └─ 实战代码
│  ├─ do-while循环
│  │  ├─ 语法格式
│  │  ├─ 执行流程
│  │  ├─ 适用场景
│  │  └─ 实战代码
│  └─ for循环
│     ├─ 语法格式
│     ├─ 执行流程
│     ├─ 适用场景
│     └─ 实战代码
├─ 循环控制语句
│  ├─ break:跳出当前循环/switch
│  ├─ continue:跳过本次循环,执行下一次
│  └─ goto:无条件跳转(慎用)
├─ 循环嵌套
│  ├─ 嵌套规则
│  └─ 实战:打印九九乘法表
├─ 三大循环对比与选型
├─ 高频坑点与优化技巧
└─ 综合实战案例


二、循环语句基础认知

1. 什么是循环?

在满足指定条件的前提下,重复执行一段代码块的语法结构,直到条件不成立时终止循环,避免重复编写代码,提升程序效率。

2. 循环必备三要素

• 初始化表达式:定义循环变量,设置初始值,只执行一次

• 条件判断表达式:决定循环是否继续执行(真执行,假终止)

• 更新表达式:修改循环变量值,避免陷入死循环
核心提醒:三大循环都必须包含这三要素,缺一不可!


三、while循环(先判断,后执行)

1. 语法格式

// 初始化表达式
while (条件判断表达式) {
    // 循环体(需要重复执行的代码)
    // 更新表达式
}


2. 执行流程

1. 执行初始化表达式,给循环变量赋初值;

2. 判断while后条件表达式,结果为真(非0),执行循环体;

3. 循环体执行完毕,执行更新表达式,修改循环变量;

4. 再次判断条件,重复步骤2-3,直到条件为假(0),退出循环。

3. 适用场景

循环次数不固定、先判断条件再执行代码的场景(如未知次数的输入校验、遍历未知长度数据)。

4. 实战代码:计算1-100累加和

#include <stdio.h>
int main() {
    // 1.初始化循环变量
    int i = 1;
    int sum = 0;
    // 2.条件判断
<= 100) {
        // 循环体:累加求和
        sum += i;
        // 3.更新表达式:变量自增
        i++;
    }
    // 循环结束,输出结果
    printf("1-100的累加和为:%d\n", sum);
    return 0;
}


运行结果:1-100的累加和为:5050


四、do-while循环(先执行,后判断)

1. 语法格式


// 初始化表达式
do {
    // 循环体
    // 更新表达式
} while (条件判断表达式);  // 注意:末尾必须加分号!


2. 执行流程

1. 执行初始化表达式;

2. 直接执行一次循环体,再执行更新表达式;

3. 判断while后条件,为真则继续循环,为假则退出循环。
核心特点:无论条件是否成立,循环体至少执行一次!


3. 适用场景

需要先执行一次代码,再判断条件的场景(如菜单选择、密码输入、单次执行后校验)。

4. 实战代码:简易菜单选择

<stdio.h>
int main() {
int choice;
do {
// 先打印菜单,至少执行一次
printf("==========简易菜单==========\n");
printf("1. 开始游戏\n");
printf("2. 查看设置\n");
printf("0. 退出程序\n");
printf("============================\n");
printf("请输入你的选择:");
scanf("%d", &choice);

// 分支匹配选择
switch (choice) {
case 1:
printf("游戏开始!\n\n");
break;
case 2:
printf("打开设置界面!\n\n");
break;
case 0:
printf("退出程序,再见!\n");
break;
default:
printf("输入错误,请重新选择!\n\n");
}
} while (choice != 0);  // 选择0则退出循环
return 0;
}


---


## 五、for循环(循环次数固定,最常用)


### 1. 语法格式


```c
for (初始化表达式; 条件判断表达式; 更新表达式) {
    // 循环体
}


2. 执行流程

1. 执行初始化表达式,只执行一次;

2. 判断条件表达式,为真执行循环体,为假退出循环;

3. 执行更新表达式,再次判断条件,重复步骤2-3。
核心优势:三要素集中写在一行,代码简洁、可读性高,是固定次数循环首选!


3. 适用场景

循环次数固定、已知的场景(如数组遍历、固定次数累加、打印规律图案)。

4. 实战代码:打印1-10所有偶数

#include<stdio.h>
int main() {
    // for循环三要素整合
    for (int i =<= 10; i++) {
        // 判断偶数
        if (i % 2 == 0) {
            printf("%d ", i);
        }
    }
    printf("\n");
    return 0;
}


运行结果:2 4 6 8 10


六、循环控制语句(break/continue/goto)

循环控制语句用于手动干预循环执行流程,灵活实现复杂逻辑,常用的有break和continue。

1. break语句

• 作用:立即终止当前所在循环/switch语句,跳出循环体,执行循环后续代码;

• 实战:找到1-50中第一个能被7整除的数,找到即退出循环
 

include <stdio.h>
int main() {
for (int i = 1; i<= 50; i++) {
if (i % 7 == 0) {
printf("第一个能被7整除的数是:%d\n", i);
break;  // 找到后直接退出循环
}
}
return 0;
}


### 2. continue语句


- 作用:**跳过本次循环剩余代码**,直接执行更新表达式,进入下一次循环;
- 实战:打印1-10中除了5以外的数字
```c

#include<stdio.h>
int main() {
    for (int i = 1<= 10; i++) {
        if (i == 5) {
            continue;  // 跳过i=5的本次循环
        }
        printf("%d ", i);
    }
    return 0;
}


运行结果:1 2 3 4 6 7 8 9 10

3. goto语句

无条件跳转语句,可跳转到指定标签位置,但会破坏程序结构,企业开发严禁使用,仅在底层代码偶尔使用,这里不做重点讲解。


七、循环嵌套(多重循环)

1. 定义

在一个循环内部,嵌套另一个完整的循环,外层循环每执行一次,内层循环执行完整的所有次数。

2. 核心实战:打印九九乘法表(经典面试题)


 

#include<stdio.h>
int main() {
    // 外层循环:控制行数
    for (int i<= 9; i++) {
        // 内层循环:控制列数
        for (int j = <= i; j++) {
            printf("%d*%d=%d\t", j, i, i*j);
        }
        // 每行结束换行
        printf("\n");
    }
    return 0;
}


八、三大循环深度对比与选型

对比维度 while循环 do-while循环 for循环 
执行顺序 先判断,后执行 先执行,后判断 先判断,后执行 
循环执行次数 0次或多次 1次或多次 0次或多次 
三要素位置 分散在代码中 分散在代码中 集中在一行 
代码简洁度 一般 一般 极高 
适用场景 循环次数未知 需至少执行一次 循环次数已知 

开发选型建议:

1. 固定次数循环:优先选for循环;

2. 未知次数、先判断:优先选while循环;

3. 必须先执行一次:选do-while循环。


九、循环高频坑点&优化技巧

1. 高频坑点

1. 死循环:缺少更新表达式/条件表达式永远为真(如while(1)),程序无限执行;

2. 循环变量初始化错误:导致循环次数多/少、结果异常;

3. do-while末尾漏写分号:语法报错,编译不通过;

4. break/continue作用域混淆:break跳出当前循环,不是外层循环;

5. 循环体内定义变量:重复开辟内存,降低程序效率。

2. 优化技巧

1. 固定次数优先用for循环,代码更简洁;

2. 循环体内避免复杂计算、IO操作,提升执行效率;

3. 循环嵌套层数尽量≤2层,避免代码可读性下降;

4. 杜绝死循环,循环条件务必清晰、可终止。


十、综合实战:猜数字游戏

结合循环+分支,实现经典猜数字小游戏,巩固循环语法

int main() {
    // 生成随机数
    srand((unsigned int)time(NULL));
    int num = rand() % 100 + 1;  // 生成1-100随机数
    int guess;
    int count = 0;

    printf("==========猜数字游戏==========\n");
    printf("系统已生成1-100的随机数,开始猜吧!\n");

    // while循环实现多次猜测
    while (1) {
        printf("请输入你猜的数字:");
        scanf("%d", &guess);
        count++;

        if (guess > num) {
            printf("猜大了!\n");
        } else if (guess< num) {
            printf("猜小了!\n");
        } else {
            printf("恭喜你,猜对了!总共猜了%d次\n", count);
            break;  // 猜对退出循环
        }
    }
    return 0;
}


十一、总结

C语言三大循环是编程基础,熟练掌握执行逻辑、适用场景、控制语句,是写出高效代码的关键。

1. for循环:固定次数首选,语法简洁;

2. while循环:未知次数首选,先判断后执行;

3. do-while循环:至少执行一次,先执行后判断;

4. 循环三要素缺一不可,严防死循环,合理使用break/continue控制流程。

建议大家把文中代码手动敲一遍,结合思维导图梳理知识框架,彻底吃透循环语句!

后续会持续更新C语言指针、函数、数组、算法等进阶干货,欢迎点赞、收藏、关注,有疑问可在评论区留言交流~
 

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐