第六章——循环 while 和 do/while

1. while

只要给定的条件为真,while 循环语句会重复执行其后代码块中的内容。

语法:

while(/*布尔表达式*/)
{
   // 如果布尔表达式为真将执行的语句
}

在这里,while 循环的关键点是循环可能一次都不会执行。当条件为 false 时,会跳过循环主体,直接执行紧接着 while 循环的下一条语句。

下面是一个输出 0-10 中偶数的实例:

#include <stdio.h>

int main() {
    int count = 0;
    while (count < 10) {
        // 如果是偶数则输出该数
        if (count % 2 == 0)
            printf("%d\n", count);
        count++;
    }
    return 0;
}

2. 循环控制语句

在 while 循环中我们可以通过其他语句来控制循环的过程。

C 语言中有以下三个循环控制语句:

控制语句描述
break终止循环或 switch 语句
continue告诉一个循环体立刻停止本次循环,重新开始下次循环
goto将控制转移到被标记的语句,不建议在程序中使用 goto 语句

如果在上面的代码中加入 break,则可以改成如下代码:

#include <stdio.h>

int main() {
    int count = 0;
    while (1) {
        if (count % 2 == 0)
            printf("%d\n", count);
        count++;
        if (count >= 10)
            break;
    }
    return 0;
}

如果在上面的代码中加入 continue,则可以改成如下代码:

#include <stdio.h>

int main() {
    int count = 0;
    while (count < 10) {
        if (count % 2 == 1) {
            count++;
            continue;
        } else
            printf("%d\n", count);
        count++;
    }
    return 0;
}

3. do/while 语句

do/while 循环是在循环的尾部检查它的条件。

do/while 循环与 while 循环类似,但是 do/while 循环会确保至少执行一次循环。

语法:

do
{
   statement(s);
}while( condition );

将上面的例子改成 do/while 语句后,代码如下:

#include <stdio.h>

int main() {
    int count = 0;
    do {
        if (count % 2 == 0)
            printf("%d\n", count);
        count++;
    } while (count < 10);
    return 0;
}

4. 小测试

  • 输入一个整数,计算出该整数的位数。
  • 输入一个整数,逆向输出该数,如输入 123456,反向输出 654321.