首页 > 编程笔记 > C语言笔记

C语言do while循环的用法(非常详细)

在C语言中,do while 循环是一种特殊的循环结构,属于 while 循环的变体;它确保循环体至少执行一次,然后根据条件决定是否继续执行。这种循环结构在某些特定场景下非常有用,尤其是当我们需要在检查条件之前先执行一些操作时。
 

do while 循环的基本语法如下:

do {
    // 循环体
} while (条件表达式);

循环的执行过程是这样的:首先,程序会执行一次循环体中的代码。然后,它会检查 while 后面括号中的条件表达式。如果条件为真(非零值),循环会继续执行;如果条件为假(零值),循环就会终止。这个过程会一直重复,直到条件变为假。
 

do while 循环与普通的 while 循环的主要区别在于,do while 循环保证循环体至少会执行一次,即使条件一开始就是假的。这种特性使得 do while 循环在某些情况下特别有用,比如需要至少执行一次操作然后再检查条件的场景。
 

让我们通过一个简单的例子来理解 do while 循环的工作原理:

#include <stdio.h>

int main() {
    int num = 1;
    
    do {
        printf("%d ", num);
        num++;
    } while (num <= 5);
    
    return 0;
}

这个程序的输出结果是:

1 2 3 4 5

在这个例子中,我们初始化了一个变量 num 为 1,循环体会打印 num 的值,然后将其递增。循环会一直执行,直到 num 大于 5。注意,即使我们将初始值设置为大于 5 的数,循环体也会至少执行一次。


do while 循环在处理用户输入时特别有用,例如,我们可以使用它来确保用户输入有效的数据:

#include <stdio.h>

int main() {
    int number;
    
    do {
        printf("请输入一个正整数:");
        scanf("%d", &number);
        
        if (number <= 0) {
            printf("输入无效,请重试。\n");
        }
    } while (number <= 0);
    
    printf("你输入的正整数是:%d\n", number);
    
    return 0;
}

在这个例子中,程序会一直提示用户输入一个正整数,直到用户真的输入了一个正整数为止。这种方式可以有效地处理无效输入,确保程序只在得到有效输入后才继续执行。


do while 循环还可以用于实现程序菜单,比如,我们可以创建一个简单的计算器程序:

#include <stdio.h>

int main() {
    int choice;
    float num1, num2, result;

    do {
        printf("\n简单计算器\n");
        printf("1. 加法\n");
        printf("2. 减法\n");
        printf("3. 乘法\n");
        printf("4. 除法\n");
        printf("0. 退出\n");
        printf("请选择操作 (0-4): ");
        scanf("%d", &choice);

        switch(choice) {
            case 1:
            case 2:
            case 3:
            case 4:
                printf("输入两个数: ");
                scanf("%f %f", &num1, &num2);
                break;
            case 0:
                printf("感谢使用,再见!\n");
                break;
            default:
                printf("无效选择,请重试。\n");
                continue;
        }

        switch(choice) {
            case 1:
                result = num1 + num2;
                printf("%.2f + %.2f = %.2f\n", num1, num2, result);
                break;
            case 2:
                result = num1 - num2;
                printf("%.2f - %.2f = %.2f\n", num1, num2, result);
                break;
            case 3:
                result = num1 * num2;
                printf("%.2f * %.2f = %.2f\n", num1, num2, result);
                break;
            case 4:
                if (num2 != 0) {
                    result = num1 / num2;
                    printf("%.2f / %.2f = %.2f\n", num1, num2, result);
                } else {
                    printf("错误:除数不能为零!\n");
                }
                break;
        }
    } while (choice != 0);

    return 0;
}

这个程序会显示一个菜单,让用户选择要执行的操作。它会一直循环,直到用户选择退出(输入 0)。这种结构非常适合用 do while 循环来实现,因为我们希望菜单至少显示一次,然后根据用户的选择决定是否继续循环。
 

虽然 do while 循环在某些情况下非常有用,但它也有一些潜在的陷阱需要注意。例如,如果忘记在循环体内更新控制变量或条件,可能会导致无限循环。此外,由于 do while 循环至少执行一次,在某些情况下可能会导致意外的行为。因此,在使用 do while 循环时,务必确保循环的终止条件最终会被满足。

相关文章