while语句

204 阅读3分钟

在 C 语言中,while 语句是一种先判断后执行的循环控制结构,用于根据条件重复执行一段代码块。以下是其规则与简介:

基本语法

c

运行

while (条件表达式) {
    // 循环体(需要重复执行的语句)
}
  • 条件表达式:必须是一个可计算为 “真”(非 0)或 “假”(0)的表达式(C 语言中没有专门的布尔类型,用 0 表示假,非 0 表示真)。
  • 循环体:可以是单条语句或用 {} 包裹的复合语句(推荐始终用 {} 明确范围,避免逻辑错误)。

核心规则

  1. 执行流程

    • 先判断 “条件表达式”:若结果为非 0(真) ,则执行循环体;
    • 循环体执行完毕后,再次回到条件判断,重复上述过程;
    • 若条件为0(假) ,则跳出循环,执行后续代码。

    简言之:先判断,再执行,条件不满足则直接退出

  2. 循环体的要求

    • 若循环体包含多条语句,必须用 {} 包裹成复合语句;
    • 若只有单条语句,{} 可省略,但可读性差,不推荐。
  3. 避免死循环

循环体内必须包含改变条件的语句(如变量自增 i++、输入更新等),否则条件可能永远为真,导致循环无限执行(死循环)。例:死循环(无退出条件):

死循环示例:

#include <stdio.h>

/*
while 循环
1. 死循环。while(表达式) 表达式一直为true,循环一直执行
*/
int main() {
    while(1){
        printf("hello world!");
    }
    return 0;
}

输出 image.png 案例

#include <stdio.h>

int main() {
    // 输入一个年份,判断是否闰年?
    // 如果输入的是0,就结束
    while(1){
        int year;
        printf("\n请输入要判断的年份(0表示退出):");
        scanf("%d", &year);
        if(year == 0){
            break;
        }
        if ((year%100!=0 && year%4==0) || year%400==0) {
            printf("%d 是闰年\n", year);
        } else {
            printf("%d 不是闰年\n", year);
        }
    }
    printf("\n下次再来吧~");
    return 0;
}      
}

输出

image.png

while语句示例:

普通循环

#include <stdio.h>
int main(){
	
	int i = 0;
	while(i<3000){
		printf(" %d ,I miss you\n",i+1);
		i++;
	}
	return 0;
	
}

输出

image.png

while求累加

#include <stdio.h>

int main() {
    int s = 0;
    int i = 1;
    while (i <= 100) {
        printf("%d \n", i);
        s += i;
        i++;
    }
    printf("%d \n", s);
    return 0;
}

输出 image.png

适用场景

while 循环适合循环次数不确定的场景,即循环是否继续依赖动态条件(如用户输入、文件读取结束标志等)。例如:

  • 读取用户输入直到输入特定字符(如 'q' 退出);
  • 处理链表节点直到指针为 NULL
  • 等待某个事件发生(如传感器数据达标)。

与其他循环的区别

  • 与 for 循环相比:for 更适合已知循环次数的场景(初始化、条件、更新在同一行),while 更灵活,适合条件动态变化的场景。
  • 与 do-while 循环相比:do-while 是 “先执行后判断”(至少执行一次),而 while 可能一次都不执行(若初始条件为假)。

掌握 while 循环的核心是控制条件的变化,确保循环能在合理时机退出。