- C语言编程教程
- C语言 - 首页
- C语言基础
- C语言 - 概述
- C语言 - 特性
- C语言 - 历史
- C语言 - 环境搭建
- C语言 - 程序结构
- C语言 - Hello World
- C语言 - 编译过程
- C语言 - 注释
- C语言 - 词法单元
- C语言 - 关键字
- C语言 - 标识符
- C语言 - 用户输入
- C语言 - 基本语法
- C语言 - 数据类型
- C语言 - 变量
- C语言 - 整型提升
- C语言 - 类型转换
- C语言 - 类型强制转换
- C语言 - 布尔值
- C语言中的常量和字面量
- C语言 - 常量
- C语言 - 字面量
- C语言 - 转义序列
- C语言 - 格式说明符
- C语言中的运算符
- C语言 - 运算符
- C语言 - 算术运算符
- C语言 - 关系运算符
- C语言 - 逻辑运算符
- C语言 - 位运算符
- C语言 - 赋值运算符
- C语言 - 一元运算符
- C语言 - 自增和自减运算符
- C语言 - 三元运算符
- C语言 - sizeof 运算符
- C语言 - 运算符优先级
- C语言 - 其他运算符
- C语言中的决策
- C语言 - 决策
- C语言 - if 语句
- C语言 - if...else 语句
- C语言 - 嵌套 if 语句
- C语言 - switch 语句
- C语言 - 嵌套 switch 语句
- C语言中的循环
- C语言 - 循环
- C语言 - while 循环
- C语言 - for 循环
- C语言 - do...while 循环
- C语言 - 嵌套循环
- C语言 - 无限循环
- C语言 - break 语句
- C语言 - continue 语句
- C语言 - goto 语句
- C语言中的函数
- C语言 - 函数
- C语言 - 主函数
- C语言 - 按值调用函数
- C语言 - 按引用调用函数
- C语言 - 嵌套函数
- C语言 - 变参函数
- C语言 - 用户自定义函数
- C语言 - 回调函数
- C语言 - return 语句
- C语言 - 递归
- C语言中的作用域规则
- C语言 - 作用域规则
- C语言 - 静态变量
- C语言 - 全局变量
- C语言中的数组
- C语言 - 数组
- C语言 - 数组的特性
- C语言 - 多维数组
- C语言 - 将数组传递给函数
- C语言 - 从函数返回数组
- C语言 - 变长数组
- C语言中的指针
- C语言 - 指针
- C语言 - 指针和数组
- C语言 - 指针的应用
- C语言 - 指针运算
- C语言 - 指针数组
- C语言 - 指向指针的指针
- C语言 - 将指针传递给函数
- C语言 - 从函数返回指针
- C语言 - 函数指针
- C语言 - 指向数组的指针
- C语言 - 指向结构体的指针
- C语言 - 指针链
- C语言 - 指针与数组
- C语言 - 字符指针和函数
- C语言 - 空指针
- C语言 - void 指针
- C语言 - 悬空指针
- C语言 - 解引用指针
- C语言 - 近指针、远指针和巨型指针
- C语言 - 指针数组的初始化
- C语言 - 指针与多维数组
- C语言中的字符串
- C语言 - 字符串
- C语言 - 字符串数组
- C语言 - 特殊字符
- C语言结构体和联合体
- C语言 - 结构体
- C语言 - 结构体和函数
- C语言 - 结构体数组
- C语言 - 自引用结构体
- C语言 - 查找表
- C语言 - 点 (.) 运算符
- C语言 - 枚举 (enum)
- C语言 - 结构体填充和打包
- C语言 - 嵌套结构体
- C语言 - 匿名结构体和联合体
- C语言 - 联合体
- C语言 - 位域
- C语言 - typedef
- C语言中的文件处理
- C语言 - 输入 & 输出
- C语言 - 文件 I/O (文件处理)
- C语言预处理器
- C语言 - 预处理器
- C语言 - 预处理指令
- C语言 - 预处理器运算符
- C语言 - 宏
- C语言 - 头文件
- C语言中的内存管理
- C语言 - 内存管理
- C语言 - 内存地址
- C语言 - 存储类别
- 其他主题
- C语言 - 错误处理
- C语言 - 可变参数
- C语言 - 命令执行
- C语言 - 数学函数
- C语言 - static 关键字
- C语言 - 随机数生成
- C语言 - 命令行参数
- C语言编程资源
- C语言 - 问答
- C语言 - 快速指南
- C语言 - 速查表
- C语言 - 有用资源
- C语言 - 讨论
C语言 - while循环
在C语言中,while 是一个用于构成循环的关键字。while 循环是C语言中最常用的循环类型之一。C语言中的循环。C语言中的其他循环关键字是 for 和 do-while。
while 循环通常被称为入口验证循环,而do-while 循环是出口验证循环。for 循环则是一个自动循环。
C语言while循环的语法
构建while 循环的语法如下:
while(expression){ statement(s); }
while 关键字后面跟着一个括号,其中应该包含一个布尔表达式。括号后面是用花括号括起来的一段语句块。
C语言while循环的流程图
下面的流程图表示while 循环的工作方式:
while循环在C语言中如何工作?
C编译器 会评估表达式。如果表达式为真,则会执行其后的代码块。如果表达式为假,编译器会忽略while 关键字后面的代码块,并继续执行代码块后面的下一条语句。
由于控制循环的表达式是在程序进入循环之前进行测试的,因此while 循环被称为入口验证循环。这里需要注意的关键点是,如果条件在第一次就发现为假,则while 循环可能根本不会执行。
while 关键字意味着编译器会持续执行后续代码块,直到表达式为假。条件位于循环结构的顶部。每次迭代后,都会测试条件。如果发现为真,编译器会执行下一次迭代。一旦表达式被发现为假,循环体将被跳过,并且将执行while循环后的第一条语句。
C语言while循环的示例
下面的程序打印“Hello World”消息五次。
#include <stdio.h> int main(){ // local variable definition int a = 1; // while loop execution while(a <= 5){ printf("Hello World \n"); a++; } printf("End of loop"); return 0; }
输出
在这里,while 循环充当计数循环。运行代码并检查其输出:
Hello World Hello World Hello World Hello World Hello World End of loop
示例解释
在while 语句之前,控制重复次数的变量“a”被初始化为1。由于条件“a <= 5”为真,程序进入循环,打印消息,将“a”加1,然后返回到循环顶部。
在下一次迭代中,“a”为2,因此条件仍然为真,因此循环再次重复,并持续到条件变为假。循环停止重复,程序控制转到代码块之后的步骤。
现在,将“a”的初始值更改为10,然后再次运行代码。现在输出将显示以下内容:
End of loop
这是因为while 关键字之前的条件在第一次迭代中就为假,因此代码块没有重复执行。
“char”变量表示与其ASCII值对应的字符。因此,它可以递增。因此,我们将变量的值从“a”递增到“z”。
将while用作条件循环
您可以将while循环用作条件循环,其中循环将一直执行到满足给定条件为止。
示例
在这个例子中,while 循环用作条件循环。循环会一直重复,直到接收到的输入是非负数。
#include <stdio.h> int main(){ // local variable definition char choice = 'a'; int x = 0; // while loop execution while(x >= 0){ (x % 2 == 0) ? printf("%d is Even \n", x) : printf("%d is Odd \n", x); printf("\n Enter a positive number: "); scanf("%d", &x); } printf("\n End of loop"); return 0; }
输出
运行代码并检查其输出:
0 is Even Enter a positive number: 12 12 is Even Enter a positive number: 25 25 is Odd Enter a positive number: -1 End of loop
带有break和continue的while循环
在以上所有示例中,while 循环的设计目的是重复多次,或者直到找到某个特定条件。C语言有break 和 continue 语句来控制循环。这些关键字可以在while 循环内使用。
示例
break 语句导致循环终止:
while (expr){ . . . . . . if (condition) break; . . . }
示例
continue 语句使循环从开头重复:
while (expr){ . . . . . . if (condition) continue; . . . }
更多C语言while循环示例
示例:打印小写字母
下面的程序使用while 循环打印所有小写字母。
#include <stdio.h> int main(){ // local variable definition char a = 'a'; // while loop execution while(a <= 'z') { printf("%c", a); a++; } printf("\n End of loop"); return 0; }
输出
运行代码并检查其输出:
abcdefghijklmnopqrstuvwxyz End of loop
示例:使两个变量相等
在下面给出的代码中,我们有两个变量“a”和“b”,分别初始化为10和0。在循环中,“b”递减,“a”在每次迭代中递增。循环设计为重复执行,直到“a”和“b”不相等。当两者都达到5时,循环结束。
#include <stdio.h> int main(){ // local variable definition int a = 10, b = 0; // while loop execution while(a != b){ a--; b++; printf("a: %d b: %d\n", a,b); } printf("\n End of loop"); return 0; }
输出
运行此代码时,将产生以下输出:
a: 9 b: 1 a: 8 b: 2 a: 7 b: 3 a: 6 b: 4 a: 5 b: 5 End of loop
while循环与do while循环
do-while 循环在大多数情况下与while 循环类似,尽管它们的语法有所不同。do-while 循环被称为出口验证循环。在某些情况下,它们的行为是不同的。while 和 do-while 循环之间的区别在本教程的do-while 章节中进行了解释。