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 - Main 函数 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 - 指针 vs 数组 C - 字符指针和函数 C - NULL 指针 C - void 指针 C - 悬垂指针 C - 解引用指针 C - Near、Far 和 Huge 指针 C - 指针数组的初始化 C - 指针与多维数组

C 语言中的字符串

C - 字符串 C - 字符串数组 C - 特殊字符

C 语言的结构体和联合

C - 结构体 C - 结构体和函数 C - 结构体数组 C - 自引用结构 C - 查找表 C - 点 (.) 运算符 C - 枚举(或 enum) C - 结构填充和打包 C - 嵌套结构 C - 匿名结构和联合 C - 联合 C - Bit 位字段 C - Typedef

C 语言中的文件处理

C - 输入和输出 C - 文件 I/O(文件处理)

C 语言中的预处理器

C - 预处理器 C - #pragma 编译指示 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 语言中最常用的循环类型之一。dowhile 关键字一起使用可以形成一个循环。do-while 循环是一种退出验证循环,在执行完循环体后会检查测试条件。而 while 循环 是一种进入验证循环。另一方面,for 循环 是一个自动循环。

do while 循环的语法

C 语言中 do-while 循环的语法为 -

do {
   statement(s);
} while(condition);

while 循环如何工作?

循环结构以关键字 do 开头。之后是花括号内的语句块。关键字 while 跟在右花括号后面。while 前面有一个括号,括号内应包含一个布尔表达式。

现在让我们了解 while 循环的工作原理。当 C 编译器 遇到 do 关键字时,程序控制将进入并执行花括号标记的代码块。到达代码块末尾时,将对 while 关键字前面的表达式进行求值。

如果表达式为真,程序控制将返回到循环顶部。如果表达式为假,编译器将停止返回循环块顶部,并继续执行该块之后的下一个语句。注意,while 语句末尾有一个分号。

do while 循环流程图

以下流程图展示了 do-while 循环的工作原理 -

C 语言中的 do...while 循环

由于在程序首次运行循环块后会测试控制循环的表达式,因此 do-while 循环被称为"退出验证循环"。这里需要注意的关键点是,do-while 循环确保循环至少执行一次。

while 关键字表示只要表达式为真,编译器就会继续执行接下来的块。但是,由于条件位于循环结构的末尾,因此每次迭代后都会检查条件(而不是像 while 循环那样在每次迭代之前检查)。

程序无条件执行第一次迭代,然后测试条件。如果条件为真,编译器将执行下一次迭代。一旦表达式为假,循环体将被跳过,并执行 while 循环后的第一个语句。

让我们通过几个示例来理解 while 循环的行为。

do while 循环示例

以下程序打印了五次 Hello world 消息。

#include <stdio.h>
 
int main(){

   // 局部变量定义
   int a = 1;

   // while 循环执行
   do{
      printf("Hello World
");
      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 关键字之前的条件为 false,因此该块不会在下一次重复执行。因此,do-while 循环至少需要一次迭代,因为测试条件位于循环的末尾。因此,do-while 循环被称为"退出验证循环"。

while 循环和 do-while 循环之间的区别

whiledo-while 构造的循环看起来相似。您可以轻松地将 while 循环转换为 do-while 循环,反之亦然。然而,两者之间存在一些关键区别。

明显的语法差异在于,do-while 循环以 do 关键字开头,以 while 关键字结尾。而 while 循环不需要 do 关键字。其次,在 do-while 循环中,while 前面有一个分号。而 while 循环中没有分号。

示例

控制循环的测试条件的位置是两者之间的主要区别。while 循环的测试条件位于开头,而 do-while 循环的测试条件位于结尾。这如何影响循环行为?请看以下代码:

#include <stdio.h>
 
int main(){

   // 局部变量定义
   int a = 0, b = 0; 

   // while 循环执行
   printf("Output of while loop: 
");
   
   while(a < 5){
      a++;
      printf("a: %d
", a);
   }

   printf("Output of do-while loop: 
");
   
   do{
      b++;
      printf("b: %d
",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 循环也可用于构造条件循环。您还可以在 do-while 循环中使用 breakcontinue 语句。

c_loops.html