C 语言中的 Do-While 循环
do-while 循环是 C 语言中最常用的循环类型之一。do 和 while 关键字一起使用可以形成一个循环。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 循环的工作原理 -

由于在程序首次运行循环块后会测试控制循环的表达式,因此 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 循环之间的区别
用 while 和 do-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 循环中使用 break 和 continue 语句。