C语言中的Do-While循环



do-while循环是C语言中最常用的循环类型之一。C语言中的循环dowhile关键字一起构成一个循环。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 loop in C

由于控制循环的表达式是在程序第一次运行循环块后测试的,因此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循环的区别

whiledo-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循环也可用于构建条件循环。您还可以使用breakcontinue语句在do-while循环内。

c_loops.htm
广告