在编程中,循环用于重复执行一段代码,直到满足特定条件为止。
C语言有三种类型的循环。
- for 循环
- while 循环
- do...while 循环
在上一个教程中,我们学习了for
循环。在本教程中,我们将学习while
和do..while
循环。
while 循环
while
循环的语法是
while (testExpression) {
// the body of the loop
}
while循环如何工作?
while
循环会计算括号()
中的testExpression
。- 如果
testExpression
为真,则执行while
循环体内的语句。然后,再次计算testExpression
。 - 这个过程一直持续到
testExpression
计算为假。 - 如果
testExpression
为假,循环终止。
要了解更多关于测试表达式(当testExpression
计算为真和假时),请查看关系运算符和逻辑运算符。
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。
- 当
i = 1
时,测试表达式i <= 5
为真。因此,执行while
循环体。这会在屏幕上打印1
,并且i的值增加到2
。 - 现在,
i = 2
,测试表达式i <= 5
再次为真。再次执行while
循环体。这会在屏幕上打印2
,并且i的值增加到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 循环流程图

示例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的值。