Cprogramming 简明教程

C - While Loop

在 C 中, while 是我们可以用于构造循环的关键字之一。 while 循环是最常用的 loops in C 之一。C 中的其他循环关键字是 fordo-while

while 循环通常称为 entry verified loop ,而 do-while loopexit verified loop 。而 for loop 是一个 automatic loop

Syntax of C while Loop

构造 while 循环的语法如下 −

while(expression){
   statement(s);
}

while 关键字后跟一个括号,其中应该有一个布尔表达式。在括号后,大括号内有一组语句。

Flowchart of C while Loop

以下流程图表示 while 循环的工作方式 −

cpp while loop

How while Loop Works in C?

C compiler 会计算表达式。如果表达式为真,就会执行后跟的代码块。如果表达式为假,编译器会忽略 while 关键字旁边的块,并继续执行块后的下一个语句。

由于在程序进入循环之前会对控制循环的表达式进行测试,因此 while 循环称为 entry verified loop 。此处,需要知道的一点是,如果条件在第一个实例中被发现不为真, while 可能根本不执行。

while 关键字表示只要表达式为真,编译器就会继续执行之后的块。该条件位于循环结构的顶部。在每次迭代之后,都会测试该条件。如果发现为真,编译器会执行下一次迭代。一旦发现表达式为假,就会跳过循环体,并执行 while 循环后的第一个语句。

Example of while Loop in C

下列程序将会显示五次 prints the "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;
}

Output

此处, while 循环充当计数循环。运行代码并查看其输出 −

Hello World
Hello World
Hello World
Hello World
Hello World
End of loop

Example Explanation

控制重复次数的变量“a”在 while 语句之前被初始化为 1。由于条件“a ⇐ 5”为真,程序会进入循环,打印消息,将“a”递增 1,并返回到循环顶部。

在下一迭代中,“a”为 2,因此条件仍然为真,因此循环会再次重复,直到条件变为假。循环会停止重复,程序控制会转到块后的步骤。

现在,将“a”的初始值更改为 10,并再次运行代码。现在,输出将显示以下内容 −

End of loop

这是因为 while 关键字之前的条件在第一个迭代中本身就为假,因此不会重复该块。

“char”变量表示对应于其 ASCII 值的字符。因此,可以对其进行递增。因此,从“a”开始递增变量值,直到达到“z”。

Using while as Conditional Loop

你可以在给定条件得到满足之前,将 while 循环用作执行条件循环的地方。

Example

在此示例中, while 被用作 conditional loop 。在所接收的输入为非负值之前,该循环将继续重复。

#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;
}

Output

运行代码并检查其输出:

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

While Loop with break and continue

在以上所有示例中, while 循环被设计为重复一定次数,或者直到找到某个条件。C 具有 breakcontinue 语句来控制循环。可以在 while 循环中使用这些关键字。

Example

break 语句会终止一个循环 −

while (expr){
   . . .
   . . .
   if (condition)
      break;
   . . .
}

Example

continue 语句会从头开始重复一个循环 −

while (expr){
   . . .
   . . .
   if (condition)
      continue;
   . . .
}

More Examples of C while Loop

Example: Printing Lowercase Alphabets

以下程序借助 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

Example: Equate Two Variables

在给定的代码中,我们有两个 variables “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 Vs. do while Loops

在大多数情况下, do-while 循环看起来类似于 while 循环,但其语法不同。 do-while 被称为 exit verified loop 。在某些情况下,它们的行为不同。 whiledo-while 循环之间的区别在本教程的 do-while 章节中进行了说明。