while
是 C 语言中的一种循环控制结构,用于在特定条件为真时重复执行一段代码。
while 循环的语法如下:
while (条件表达式) {
// 循环体:条件为真时执行的代码
}
条件表达式
:返回真(非 0)或假(0)的表达式,决定是否继续循环。- 大括号
{}
:定义循环体,若只有一行语句,可省略,但建议保留以提高可读性。
while 循环的核心是一个条件表达式,当条件为真(非 0)时,循环体内的代码会反复执行,直到条件变为假(0)。while 循环的运行流程是:
- 检查
条件表达式
。 - 若为真,执行循环体,然后返回步骤 1。
- 若为假,退出循环,继续执行后续代码。
也就是说,while 循环的逻辑是:“只要条件成立,就继续执行。”
在 C语言中,while 循环特别适合那些循环次数不固定、依赖条件判断的场景。接下来,我们将深入探讨 while 循环的用法、使用场景以及注意事项。
【实例】简单计数。
/**
* 系统学习C语言 https://xiecoding.cn/c/
**/
#include <stdio.h>
int main(void) {
int count = 0;
while (count < 5) {
printf("计数:%d\n", count);
count++;
}
return 0;
}
输出结果:
计数:0
计数:1
计数:2
计数:3
计数:4
count < 5
初始为真,循环体执行 5 次,每次 count
自增,直到 count = 5
,条件为假,循环结束。
while常见使用场景
1) 已知次数的循环
虽然 while
更适合动态条件,但也可以用于固定次数的循环。
/**
* 系统学习C语言 https://xiecoding.cn/c/
**/
#include <stdio.h>
int main(void) {
int i = 1;
while (i <= 10) {
printf("%d ", i);
i++;
}
printf("\n");
return 0;
}
输出结果:
1 2 3 4 5 6 7 8 9 10
2) 累加计算
用 while
实现累加或求和。
/**
* 系统学习C语言 https://xiecoding.cn/c/
**/
#include <stdio.h>
int main(void) {
int sum = 0, num = 1;
while (num <= 100) {
sum += num;
num++;
}
printf("1 到 100 的和是:%d\n", sum);
return 0;
}
输出结果:
1 到 100 的和是:5050
sum
累加每次的 num
,直到 num > 100
。
3) 输入验证
while
常用于等待用户输入符合条件。
/**
* 系统学习C语言 https://xiecoding.cn/c/
**/
#include <stdio.h>
int main(void) {
int num;
printf("请输入一个正数:");
scanf("%d", &num);
while (num <= 0) {
printf("输入错误,请输入一个正数:");
scanf("%d", &num);
}
printf("你输入的正数是:%d\n", num);
return 0;
}
输出结果(示例输入):
请输入一个正数:-5
输入错误,请输入一个正数:0
输入错误,请输入一个正数:3
你输入的正数是:3
C语言do-while循环
C语言还提供 do-while
循环,与 while
的区别是条件后置,至少执行一次循环体:
do {
// 循环体:先执行一次
} while (条件表达式);
【实例】do-while 用法
/**
* 系统学习C语言 https://xiecoding.cn/c/
**/
#include <stdio.h>
int main(void) {
int num = 0;
do {
printf("num = %d\n", num);
num++;
} while (num < 3);
return 0;
}
输出结果:
num = 0
num = 1
num = 2
即使初始 num = 0
,循环体先执行一次,然后检查条件。
while注意事项
1) 避免死循环
若条件永远为真,会导致死循环。
// 错误示例
while (1) { printf("无限循环\n"); } // 死循环
解决方法:确保条件最终会变为假,或使用 break
跳出。
2) break和continue
break
立即退出循环,continue
跳过本次循环剩余部分。
/**
* 系统学习C语言 https://xiecoding.cn/c/
**/
#include <stdio.h>
int main(void) {
int i = 0;
while (i < 10) {
i++;
if (i == 3) continue; // 跳过 3
if (i == 7) break; // 在 7 退出
printf("%d ", i);
}
printf("\n");
return 0;
}
输出结果:
1 2 4 5 6
3) 条件表达式类型
条件必须返回整数值(非 0 为真,0 为假),避免使用浮点数直接比较。
// 不推荐
float f = 0.1;
while (f < 1.0) { ... } // 浮点误差可能导致问题
总结
while 是 C 语言程序常用的一种循环结构,适合处理条件动态变化的重复任务。
学习 while 循环语句,除了它本身的语法外,你还需要掌握 do-while
变体以及 break
、continue
的用法,才能灵活控制程序的执行流程。
在 C 语言程序中使用 while 循环语句时,要避免出现死循环的情况。读完本文,恭喜你已经彻底掌握 while 循环语句的用法。