ZetCode

C while

最后修改于 2023 年 1 月 9 日

C while 教程演示了如何使用 while 语句在 C 语言中创建循环。

while 语句

while 语句用于创建 while 循环。while 循环是一种控制流语句,它允许代码根据给定的布尔条件重复执行。

这是 while 循环的一般形式

while (expression) {

    statement(s);
}

while 关键字执行大括号括起来的块内的语句。只要表达式的计算结果为 true,就会执行这些语句。

C while 示例

以下示例使用 while 语句来计算总和。

simple.c
#include <stdio.h>

int main() {
    
    int i = 0;
    int sum = 0;

    while (i < 10) {
        
        sum += i;
        i++;
    }

    printf("%d\n", sum);

    return 0;
}

我们计算 1..9 的数字之和。

while 循环包含三个部分:初始化、测试和更新。语句的每次执行称为一个周期。

int i = 0;

我们初始化 i 变量。它用作计数器。

while (i < 10) {
   ...
}

while 关键字后面的圆括号内的表达式是第二阶段:测试。只要表达式的计算结果为真,循环体内的语句就会被执行。当表达式的计算结果为假时,循环终止。

i++;

这是 while 循环的最后第三个阶段:更新。我们递增计数器。请注意,不正确处理 while 循环可能导致无限循环。

$ ./simple 
45

C while - 计算阶乘

正整数 n 的阶乘,表示为 n!,是所有小于或等于 n 的正整数的乘积。

n! = n * (n-1) * (n-2) * ... * 1

这是计算阶乘的公式。

factorial.c
#include <stdio.h>

int main() {

    int i = 10;
    int factorial = 1;

    while (i > 1) {

        factorial *= i;
        i--;
    }

    printf("%d\n", factorial);

    return 0;
}

在此示例中,我们使用 while 循环计算 10! 的阶乘。

$ ./factorial 
3628800

C while - 无限循环

while (1) 创建一个无限循环。为了终止循环,我们使用 break 语句。

random.c
#include <time.h>
#include <stdio.h>
#include <stdlib.h>

int main() {

    srand(time(NULL));

    while (1) {

        int r = rand() % 30;

        printf("%d ", r);

        if (r == 22) {

            break;
        }
    }

    printf("\n");

    return 0;
}

该示例计算一个 0..29 之间的随机值。如果该值为 22,则使用 break 语句完成循环。

$ ./random 
21 6 0 4 20 26 14 6 0 29 12 15 17 2 15 24 12 17 25 29 6 10 14 22 

C while - 遍历数组

while 语句可用于遍历数组。

loop_array.c
#include <stdio.h>

int main() {

    int vals[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

    int i, sum = 0;
    size_t len = sizeof vals / sizeof vals[0];

    while (i <= len) {

        sum += vals[i];
        i++;
    }

    printf("The sum is: %d\n", sum);

    return 0;
}

在此示例中,我们有一个整数数组。我们使用 while 语句遍历数组并计算值的总和。

$ ./loop_array 
The sum is: 55

C do while 示例

do while 语句是 while 语句的一种特定形式,其中在检查条件之前先执行代码块。因此,代码块至少执行一次。

do_while.c
#include <stdio.h>

int main() {

    int val, sum = 0;

    do {

        printf("Enter a number: ");
        scanf("%d", &val);
        sum += val;

    } while(val != 0);

    printf("The sum is: %d\n", sum);

    return 0;
}

该示例要求用户反复输入一个数字。它计算所有这些值的总和。当用户输入零时,循环终止。

$ ./do_while 
Enter a number: 2
Enter a number: 3
Enter a number: 4
Enter a number: 5
Enter a number: 0
The sum is: 14

在本文中,我们介绍了 C 语言中的 while 语句。