当前位置: 首页 > news >正文

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

目录

一、语法形式

二、执行流程与特点

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

流程图表示:

三、典型应用场景

四、实例演示

实例1:打印1~10的值

实例2:计算整数位数

五、注意事项

六、练习题目

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

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

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

七、与其他循环的比较


一、语法形式

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

do {循环体语句;
} while (表达式);

二、执行流程与特点

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

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

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

  3. 执行流程

    • 执行循环体语句

    • 计算while后的表达式

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

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

流程图表示:


三、典型应用场景

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

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

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

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


四、实例演示

实例1:打印1~10的值

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

实例2:计算整数位数

#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循环计算用户输入数字的各位数字之和

#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循环直到用户选择退出

#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作为输入结束标志)

#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. 分别统计正数和负数数量


七、与其他循环的比较

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

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

http://www.lryc.cn/news/618051.html

相关文章:

  • 18.5 BERT评估指标终极指南:HuggingFace实战提升文本分类效果
  • 【LeetCode刷题集】--排序(三)
  • 基于FPGA的热电偶测温数据采集系统,替代NI的产品(二)总体设计方案
  • 用 Flink SQL 和 Paimon 打造实时数仓:深度解析与实践指南
  • 疫情可视化:基孔肯雅热风险地图实战解析
  • 自建Web应用防火墙(WAF)
  • 深入剖析 C++ STL 中的 std::list 容器
  • 机器学习-决策树(DecisionTree)
  • conda一键配置python开发环境
  • .NET Core MVC中CSHTML
  • 在 Rocky Linux 9.2 上使用 dnf 安装 Docker 全流程详解
  • 嵌入式硬件中AI硬件设计方法与技巧
  • 跨平台、低延迟、可嵌入:实时音视频技术在 AI 控制系统中的进化之路
  • day23|前端学习三件套
  • JavaScript Const的基础使用
  • 爬虫与数据分析实战
  • 爬虫和数据分析相结合案例
  • 介绍一下jQuery的AJAX异步请求
  • android 换肤框架详解2-LayoutInflater源码解析
  • 【Linux文件操作】文件操作系统调用
  • 机器学习之DBSCAN
  • Linux中DNS系统搭建与配置指南(配实验步骤与注释)
  • GO学习记录三
  • 【网络运维】Linux:常见 Web 服务器
  • 对自己的 app 进行分析, 诊断,审视
  • FPGA+护理:跨学科发展的探索(二)
  • Python day 41
  • AVS Video Converter视频转换与编辑工具深度评测
  • 什么是电网谐波?
  • PyCharm(2025.1.3.1)绑定 Conda 环境