C 语言 while 和 do...while 循环

在编程中,循环用于重复执行一段代码,直到满足特定条件为止。

C语言有三种类型的循环。

  1. for 循环
  2. while 循环
  3. do...while 循环

在上一个教程中,我们学习了for循环。在本教程中,我们将学习whiledo..while循环。


while 循环

while 循环的语法是

while (testExpression) {
  // the body of the loop 
}

while循环如何工作?

  • while循环会计算括号()中的testExpression
  • 如果testExpression,则执行while循环体内的语句。然后,再次计算testExpression
  • 这个过程一直持续到testExpression计算为
  • 如果testExpression,循环终止。

要了解更多关于测试表达式(当testExpression计算为时),请查看关系运算符逻辑运算符


while循环流程图

flowchart of while loop in C programming
while循环的工作原理

示例1:while循环

// Print numbers from 1 to 5

#include <stdio.h>
int main() {
  int i = 1;
    
  while (i <= 5) {
    printf("%d\n", i);
    ++i;
  }

  return 0;
}

输出

1
2
3
4
5

这里,我们将i初始化为1。

  1. i = 1时,测试表达式i <= 5。因此,执行while循环体。这会在屏幕上打印1,并且i的值增加到2
  2. 现在,i = 2,测试表达式i <= 5再次为。再次执行while循环体。这会在屏幕上打印2,并且i的值增加到3
  3. 这个过程一直持续到i变为6。然后,测试表达式i <= 5将为,循环终止。

do...while 循环

do..while循环与while循环类似,但有一个重要的区别。do...while循环体至少会执行一次。之后,才会计算测试表达式。

do...while 循环的语法是

do {
  // the body of the loop
}
while (testExpression);

do...while循环如何工作?

  • do...while循环体执行一次。之后,才计算testExpression
  • 如果testExpression,则再次执行循环体,并再次计算testExpression
  • 这个过程一直持续到testExpression变为
  • 如果testExpression,循环结束。

do...while 循环流程图

do while loop flowchart in C programming
do...while循环的工作原理

示例2:do...while循环

// Program to add numbers until the user enters zero

#include <stdio.h>
int main() {
  double number, sum = 0;

  // the body of the loop is executed at least once
  do {
    printf("Enter a number: ");
    scanf("%lf", &number);
    sum += number;
  }
  while(number != 0.0);

  printf("Sum = %.2lf",sum);

  return 0;
}

输出

Enter a number: 1.5
Enter a number: 2.4
Enter a number: -3.4
Enter a number: 4.2
Enter a number: 0
Sum = 4.70

在这里,我们使用do...while循环提示用户输入一个数字。只要输入的数字不是0,循环就会继续。

do...while循环至少执行一次,即第一次迭代在不检查条件的情况下执行。条件在第一次迭代执行后才检查。

do {
  printf("Enter a number: ");
  scanf("%lf", &number);
  sum += number;
}
while(number != 0.0);

因此,如果第一次输入的是一个非零数字,该数字将被添加到sum变量中,循环将继续到下一次迭代。此过程一直重复,直到用户输入0

但是,如果第一次输入的是0,将不会有第二次循环迭代,sum将变为0.0

在循环外部,我们打印sum的值。

在我们结束之前,让我们用一个挑战来测试你对C语言while和do...while循环的掌握程度!你能解决下面的挑战吗?

挑战

编写一个函数来计算给定数字的位数。

  • 返回num中的位数。
  • 例如,如果num = 12345,则预期输出为5

视频:C语言 while循环

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战