掌握do-while循环:从语法到运用

目录

一、语法形式

二、执行流程与特点

do-while循环具有以下特点:

流程图表示:

三、典型应用场景

四、实例演示

实例1:打印1~10的值

实例2:计算整数位数

五、注意事项

六、练习题目

1、编写程序,使用do-while循环计算用户输入数字的各位数字之和

2、实现一个简单的菜单系统,使用do-while循环直到用户选择退出

3、输入一组数字,使用do-while循环统计正数和负数的个数(以0作为输入结束标志)

七、与其他循环的比较


一、语法形式

do-while循环是C语言中三种循环结构之一,其基本语法格式如下:

cpp 复制代码
do {
    循环体语句;
} while (表达式);

二、执行流程与特点

do-while循环具有以下特点:

  1. 先执行后判断:与while和for循环不同,do-while会先执行循环体,然后再判断条件

  2. 至少执行一次:无论条件是否满足,循环体至少会执行一次

  3. 执行流程

    • 执行循环体语句

    • 计算while后的表达式

    • 若表达式结果为真(非0),则继续循环

    • 若表达式结果为假(0),则退出循环

流程图表示:


三、典型应用场景

do-while循环特别适合以下情况:

  • 需要至少执行一次的操作

  • 循环条件依赖于循环体内操作结果的情况

  • 用户交互场景(如菜单选择)


四、实例演示

实例1:打印1~10的值

cpp 复制代码
#include <stdio.h>
int main()
{
    int i = 1;
    do {
        printf("%d ", i);
        i++;
    } while(i <= 10);
    
    return 0;
}

实例2:计算整数位数

cpp 复制代码
#include <stdio.h>
int main()
{
    int n = 0;
    scanf("%d", &n);
    int cnt = 0;
    
    do {
        cnt++;
        n /= 10;
    } while (n != 0);
    
    printf("%d\n", cnt);
    return 0;
}

说明:这个例子特别适合使用do-while,因为:

  1. 任何整数至少有一位(包括0)

  2. 循环条件(n != 0)依赖于循环体内的操作(n /= 10)


五、注意事项

  1. while后面的分号不能省略

  2. 避免创建无限循环(确保循环条件最终会变为假)

  3. 可以使用break和continue控制流程(与while循环相同)


六、练习题目

1、编写程序,使用do-while循环计算用户输入数字的各位数字之和

cpp 复制代码
#include <stdio.h>

int main() {
    int num, sum = 0, digit;
    
    printf("请输入一个整数:");
    scanf("%d", &num);
    
    // 处理负数情况
    if (num < 0) {
        num = -num;
    }
    
    do {
        digit = num % 10;  // 获取最后一位数字
        sum += digit;      // 累加到总和
        num /= 10;         // 去掉最后一位
    } while (num > 0);
    
    printf("各位数字之和为:%d\n", sum);
    return 0;
}

说明

  1. 使用do-while确保至少执行一次(即使是0也能正确处理)

  2. 先处理负数情况,转换为正数计算

  3. 通过%10获取最后一位,/10去掉最后一位

2、实现一个简单的菜单系统,使用do-while循环直到用户选择退出

cpp 复制代码
#include <stdio.h>

int main() {
    int choice;
    
    do {
        printf("\n===== 菜单系统 =====\n");
        printf("1. 选项一\n");
        printf("2. 选项二\n");
        printf("3. 选项三\n");
        printf("0. 退出\n");
        printf("请选择:");
        scanf("%d", &choice);
        
        switch(choice) {
            case 1:
                printf("执行选项一操作\n");
                break;
            case 2:
                printf("执行选项二操作\n");
                break;
            case 3:
                printf("执行选项三操作\n");
                break;
            case 0:
                printf("感谢使用,再见!\n");
                break;
            default:
                printf("无效选项,请重新选择!\n");
        }
    } while (choice != 0);
    
    return 0;
}

说明

  1. 典型的do-while应用场景,确保至少显示一次菜单

  2. 使用switch-case处理不同选项

  3. 输入0时退出循环

3、输入一组数字,使用do-while循环统计正数和负数的个数(以0作为输入结束标志)

cpp 复制代码
#include <stdio.h>

int main() {
    int num, positive = 0, negative = 0;
    
    printf("请输入一组整数(输入0结束):\n");
    
    do {
        scanf("%d", &num);
        
        if (num > 0) {
            positive++;
        } else if (num < 0) {
            negative++;
        }
    } while (num != 0);
    
    printf("正数个数:%d\n", positive);
    printf("负数个数:%d\n", negative);
    
    return 0;
}

说明

  1. 使用do-while确保至少读取一次输入

  2. 0作为循环终止条件

  3. 分别统计正数和负数数量


七、与其他循环的比较

特性 while for do-while
先判断后执行
至少执行一次
适合已知循环次数
适合未知循环次数

通过理解这些差异,可以选择最适合特定场景的循环结构。