- 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语言 - 返回语句
- 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语言中的Do-While循环
do-while循环是C语言中最常用的循环类型之一。C语言中的循环。do和while关键字一起构成一个循环。do-while循环是出口验证循环,即在执行循环体后检查测试条件。而while循环是入口验证的。for循环另一方面,是一个自动循环。
do while循环的语法
C语言中do-while循环的语法如下:
do { statement(s); } while(condition);
do while循环的工作原理?
循环结构以关键字do开头。然后是花括号内的语句块。while关键字位于右花括号之后。while前面有一个括号,其中应该是一个布尔表达式。
现在让我们了解while循环的工作原理。当C编译器遇到do关键字时,程序控制进入并执行由花括号标记的代码块。当到达代码块的末尾时,将计算while关键字前的表达式。
如果表达式为真,则程序控制返回循环顶部。如果表达式为假,则编译器停止返回循环块的顶部,并继续执行块后面的下一条语句。请注意,while语句末尾有一个分号。
do while循环的流程图
下图显示了do-while循环的工作原理:
由于控制循环的表达式是在程序第一次运行循环块后测试的,因此do-while循环被称为“出口验证循环”。这里需要注意的关键点是,do-while循环确保循环至少执行一次。
while关键字意味着编译器只要表达式为真,就继续执行随后的块。但是,由于条件位于循环结构的末尾,因此在每次迭代后(而不是像while循环那样在每次迭代前)进行检查。
程序无条件地执行其第一次迭代,然后测试条件。如果发现为真,则编译器执行下一次迭代。一旦发现表达式为假,循环体将被跳过,并将执行while循环后的第一条语句。
让我们尝试通过一些示例来了解while循环的行为。
do while循环示例
下面的程序打印“Hello world”消息五次。
#include <stdio.h> int main(){ // local variable definition int a = 1; // while loop execution do{ printf("Hello World\n"); a++; } while(a <= 5); printf("End of loop"); return 0; }
输出
在这里,do-while循环充当计数循环。运行代码并检查其输出:
Hello World Hello World Hello World Hello World Hello World End of loop
控制重复次数的变量“a”初始化为1。程序无条件地进入循环,打印消息,将“a”加1。
当它到达循环末尾时,测试while语句中的条件。由于条件“a <= 5”为真,程序返回循环顶部并重新进入循环。
现在“a”为2,因此条件仍然为真,因此循环再次重复,并持续到条件变为假。循环停止重复,程序控制转到块后的步骤。
现在,将“a”的初始值更改为10,然后再次运行代码。它将产生以下输出:
Hello World End of loop
这是因为程序无条件地进入循环块。由于while关键字之前的条件为假,因此该块不会下一次重复。因此,do-while循环至少执行一次迭代,因为测试条件位于循环的末尾。由于这个原因,do-while循环被称为“出口验证循环”。
while循环和do while循环的区别
用while和do-while构建的循环看起来相似。您可以轻松地将while循环转换为do-while循环,反之亦然。但是,两者之间存在一些关键区别。
明显的语法差异在于do-while结构以do关键字开头,以while关键字结尾。while循环不需要do关键字。其次,在do-while循环中,你在while前面找到一个分号。while循环中没有分号。
示例
控制循环的测试条件的位置是两者之间主要区别。测试条件位于while循环的开头,而在do-while循环中则位于末尾。它如何影响循环行为?看看下面的代码:
#include <stdio.h> int main(){ // local variable definition int a = 0, b = 0; // while loop execution printf("Output of while loop: \n"); while(a < 5){ a++; printf("a: %d\n", a); } printf("Output of do-while loop: \n"); do{ b++; printf("b: %d\n",b); } while(b < 5); return 0; }
输出
最初,“a”和“b”初始化为“0”,两个循环的输出相同。
Output of while loop: a: 1 a: 2 a: 3 a: 4 a: 5 Output of do-while loop: b: 1 b: 2 b: 3 b: 4 b: 5
现在将两个变量的初始值更改为3,然后再次运行代码。两个循环的输出没有变化。
Output of while loop: a: 4 a: 5 Output of do-while loop: b: 4 b: 5
现在将两个变量的初始值更改为10,然后再次运行代码。在这里,您可以观察到两个循环之间的区别:
Output of while loop: Output of do-while loop: b: 11
请注意,while循环没有任何迭代,但do-while执行其主体一次。这是因为在while的情况下,循环条件在循环块的顶部进行验证,并且由于条件为假,程序不会进入循环。
在do-while中,程序无条件地进入循环,将“b”递增到11,然后由于条件为假而不再重复。这表明do-while保证至少重复一次,而不管循环变量的初始值如何。
do-while循环也可用于构建条件循环。您还可以使用break和continue语句在do-while循环内。