while 循环是什么?
while 循环是一种“当型”循环,它的核心思想是:当某个条件为真时,就反复执行一段代码;当条件变为假时,循环就停止了。

(图片来源网络,侵删)
你可以把它想象成一个“守门员”,只有你满足它设定的条件(你有门票”),它才允许你进入(执行循环代码)。
while 循环的基本语法
while 循环的结构非常简单:
while (条件表达式) {
// 循环体
// 当条件表达式为真时,这里面的代码会被反复执行
}
语法解析:
while:这是关键字,告诉编译器这是一个while循环。条件表达式:这是一个放在括号里的表达式,i < 10或flag == 1,这个表达式会进行布尔运算,结果要么是真(在 C 语言中,非零值代表真,通常用1),要么是假(0)。- 花括号用来包裹循环体,即需要重复执行的代码块,如果循环体只有一行代码,可以省略花括号,但为了代码清晰和防止错误,强烈建议始终使用花括号。
while 循环的执行流程
理解 while 循环的执行顺序至关重要,它遵循以下步骤:

(图片来源网络,侵删)
- 判断条件:程序会计算 中的条件表达式。
- 检查结果:
- 如果结果为真(非零),程序会执行 中的循环体代码。
- 如果结果为假(零),程序会跳过 中的代码,直接执行
while循环后面的下一条语句。
- 循环体执行后:如果执行了循环体,在循环体代码执行完毕后,程序会回到第 1 步,再次判断条件表达式。
- 重复:这个过程会一直重复,直到某次条件判断结果为假,循环才终止。
一个简单的流程图:
graph TD
A[开始] --> B{判断条件表达式};
B -- 为真 --> C[执行循环体];
C --> B;
B -- 为假 --> D[结束循环,执行后续代码];
D --> E[结束];
代码示例
示例 1:基础的 while 循环(打印 1 到 5)
这是一个最经典的入门示例,用于展示循环的基本用法。
#include <stdio.h>
int main() {
int i = 1; // 1. 初始化循环变量
// 2. 判断条件:只要 i 小于等于 5,循环就继续
while (i <= 5) {
// 3. 循环体:打印当前的 i
printf("i 的值是: %d\n", i);
// 4. 更新循环变量:这是最关键的一步!
// 如果没有这一行,i 将永远是 1,条件 i <= 5 永远为真,导致无限循环。
i = i + 1; // 或者写成 i++;
}
printf("循环结束!\n");
return 0;
}
执行过程分析:
i初始化为1。while (1 <= 5)为真,进入循环,打印i 的值是: 1。i更新为2。while (2 <= 5)为真,进入循环,打印i 的值是: 2。i更新为3。- ... 重复此过程 ...
i更新为5。while (5 <= 5)为真,进入循环,打印i 的值是: 5。i更新为6。while (6 <= 5)为假,循环终止。- 程序执行
printf("循环结束!\n");。
示例 2:无限循环
如果你忘记在循环体内更新变量,或者条件永远为真,就会发生无限循环,在开发中要尽量避免这种情况。

(图片来源网络,侵删)
#include <stdio.h>
int main() {
int i = 1;
// 这个循环永远不会结束,因为 i 的值永远不会改变
while (i > 0) {
printf("这是一个无限循环!\n");
// 如果没有 i-- 或 i++,这里就会一直打印下去
// 可以按 Ctrl+C 来强制终止程序
}
printf("这行代码永远不会被执行,\n");
return 0;
}
示例 3:基于用户输入的循环
while 循环非常适合处理不确定次数的重复任务,比如读取用户输入,直到用户输入一个特定的值。
#include <stdio.h>
int main() {
int number;
printf("请输入一个数字(输入 0 退出):");
// scanf 的返回值是成功读取的变量个数
// 只要用户输入的不是 0,循环就继续
while (scanf("%d", &number) == 1 && number != 0) {
printf("你输入了: %d\n", number);
printf("请输入下一个数字(输入 0 退出):");
}
printf("程序结束,\n");
return 0;
}
while 循环的关键点总结
-
初始化:在
while循环之前,必须初始化循环控制变量(如上面的int i = 1;)。 -
条件判断: 中的条件是循环的“开关”,它必须是能够得到真或假的表达式。
-
循环体: 中的代码是需要重复执行的部分。
-
更新变量:在循环体内部,必须有改变循环控制变量的代码(如
i++),这是让循环能够趋向于终止的关键,否则极易造成无限循环。 -
whilevsdo-while:while循环是先判断,后执行,如果第一次条件就为假,循环体一次都不会执行。do-while循环是先执行,后判断,循环体至少会执行一次,然后再判断条件是否继续。
do-while示例:int j = 10; do { printf("do-while 循环至少执行一次,j = %d\n", j); } while (j < 5); // 尽管条件为假,上面的代码还是执行了
练习
尝试编写一个程序,实现以下功能:
** 使用 while 循环计算 1 到 100 所有整数的和。
思路:
- 需要一个变量来存放总和,
sum,初始值为0。 - 需要一个循环变量
i,从1开始,到100结束。 - 在循环中,将
i的值累加到sum上。 - 每次循环后,
i的值加1。 - 循环结束后,打印
sum的值。
参考代码:
#include <stdio.h>
int main() {
int i = 1; // 循环变量,从 1 开始
int sum = 0; // 用于存储总和,初始为 0
// 当 i 小于等于 100 时,循环继续
while (i <= 100) {
sum = sum + i; // 将 i 的值加到 sum 上
i = i + 1; // 更新 i,准备下一次循环
}
printf("1 到 100 的和是: %d\n", sum);
return 0;
}
希望这个详细的解释能帮助你完全掌握 C 语言中的 while 循环!多写代码练习是掌握它的最好方法。
