C++系列-第3章循环结构-26-认识do-while语句

C++系列-第3章循环结构-26-认识do-while语句

在这里插入图片描述

在线练习:
http://noi.openjudge.cn/
https://www.luogu.com.cn/

对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。

do-while循环语句是编程中的一种控制结构,它的设计有其特定的用途和优势:

  1. 确保循环体的执行do-while循环首先执行循环体,然后再判断循环条件是否满足。这意味着即使循环条件一开始就不满足,循环体也至少会执行一次。这在某些情况下是必要的,比如初始化变量或者执行某些操作。
  2. 简化代码逻辑:在某些场景下,使用do-while循环可以简化代码逻辑。尤其是当需要至少执行一次循环体,而循环条件又可能会在执行过程中改变时。
  3. while循环的区别:与while循环相比,while循环是先判断条件,如果条件不满足,则循环体不会执行。而do-while循环则是先执行循环体,再判断条件,因此循环体至少会执行一次。
  4. 适用特定场景:例如,在用户界面编程中,可能需要首先显示一个界面,然后根据用户的输入来决定是否继续执行某些操作。这时,do-while循环就是一个很好的选择,因为它首先会显示界面(循环体),然后根据用户的输入来判断是否继续。
    总的来说,do-while循环语句是编程语言提供的一种工具,用来满足特定场景下的编程需求。它与其他循环语句(如for循环、while循环)一起,帮助程序员编写出更加灵活、高效的代码。

do-while语句格式

如果主体中只有单个语句的话,花括号可以省略。(如格式1)
格式1

do语句1while(条件表达式);

说明: 语句 1是 do-while 循环语句的循环体,它会先执行一次,如果满足条件,还会被重复执行。

格式2

do{语句1}
while(条件表达式);

说明:循环体部分由多个语句构成,应由一对花括号括起来,构成一个语句块的形式。

执行过程

(1) 执行一次循环体。
(2) 计算表达式的值,若为真,则转向第(1)步。
(3) 如表达式的值为假时,结束循环。
在这里插入图片描述

while 和 do while的对比

下面是一个简单的C++示例,演示了while循环和do-while循环的区别。这个例子中,我们使用while循环和do-while循环来计算从1加到10的和。do-while循环的特点是至少执行一次循环体,即使循环条件一开始就不满足。

#include <iostream>int main() {int sumWhile = 0;int sumDoWhile = 0;int i = 1;int j = 1;int n = 0; // 再取值1 10 对比下// 使用while循环std::cout << "Using while loop:" << std::endl;while (i <= n) {sumWhile += i;i++;}std::cout << "Sum using while loop: " << sumWhile << std::endl;// 使用do-while循环std::cout << "Using do-while loop:" << std::endl;do {sumDoWhile += j;j++;} while (j <= n);std::cout << "Sum using do-while loop: " << sumDoWhile << std::endl;return 0;
}

如果n为0,则输出为:
在这里插入图片描述

在这个例子中,while循环首先检查条件(i <= n),如果条件满足,则执行循环体。而do-while循环则首先执行循环体,然后检查条件。如果条件满足,则继续执行循环体。
编译并运行这段代码,你会看到两种循环都能正确计算出从1加到n的和,但是do-while循环至少执行了一次循环体,即使条件一开始就不满足(在这个例子中,条件始终满足,所以两种循环都会执行循环体)。这个例子突出了do-while循环的特点,即循环体至少执行一次。

案例-人类的本质

[题目描述]
人类的本质是复读机.现在给定一个小写字母和次数,请输出这个字母指定次数。
[输入格式]
第一行一个小写字母
第二行一个数字 n,表示次数
[输出格式]
输出这个字母 n 次[样例输入]
a
2
[样例输出]
aa

#include<bits/stdc++.h>
using namespace std;
char c;
int n;
int main()
{cin>>c>>n;do{//cout<<n<<endl;cout<<c;n--;}while(n);return 0;
}

案例-多数求和

题目描述
输入若干个数(不超过 1000 个数),求他们的和。

输入
一行若干个用空格分隔的整数 ai(1≤ai≤104 ),最后会以 −1 表示结束。(−1 不需要统计)

输出
一个整数,表示 这些数的和。

样例输入
10 20 30 -1
样例输出
60

#include<bits/stdc++.h>
using namespace std;
int sum,x;
int main()
{do{sum+=x;cin>>x;}while(x!=-1);cout<<sum;return 0;
}

输出为:
在这里插入图片描述

总结

本文是C++系列博客,主要讲述do while语句的用法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2660116.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Vue(一):Vue 入门与 Vue 指令

Vue 01. Vue 快速上手 1.1 Vue 的基本概念 用于 构建用户界面 的 渐进性 框架 构建用户界面&#xff1a;基于数据去渲染用户看到的界面渐进式&#xff1a;不需要学习全部的语法就能完成一些功能&#xff0c;学习是循序渐进的框架&#xff1a;一套完整的项目解决方案&#x…

Redis管道

问题引出 Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。一个请求会遵循以下步骤&#xff1a; 1 客户端向服务端发送命令分四步(发送命令→命令排队→命令执行→返回结果)&#xff0c;并监听Socket返回&#xff0c;通常以阻塞模式等待服务端响应。 2 服务端…

深入探究Protostuff枚举类型的序列化

背景&#xff1a; 有一天突然被一个群组排查线上问题&#xff0c;说是一个场景划线价和商品原价一模一样。看到问题时&#xff0c;我的内心毫无波澜&#xff0c;因为经常处理线上类似的问题&#xff0c;但了解业务后发现是上个版本经我手对接的新客弹窗商品算价&#xff0c;内心…

案例237:基于微信小程序的医院挂号预约系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

如何学习TS?

文章目录 一. 8种内置基础类型.ts二. void、never、any、unknown类型void类型never类型any类型unknown类型总结&#xff1a;void和any在项目中是比较常见的&#xff0c;never和unknown不常用。 三. 数组和函数类型定义.ts 一. 8种内置基础类型.ts /* eslint-disable typescrip…

vivado 路径分段

路径分段 与其他XDC约束不同&#xff0c;set_max_delay命令和set_min_delay在-from和-to选项的情况下&#xff0c;命令可以接受无效起始点列表或端点。当指定了无效的起始点时&#xff0c;正时发动机停止正时的传播通过该节点&#xff0c;使该节点成为有效的起点。 在以下示例…

65.乐理基础-打拍子-前附点、后附点

内容来源于&#xff1a;三分钟音乐社 上一个内容&#xff1a;前八后十六、前十六后八拍子-CSDN博客 前附点指的是一个附点八分音符加一个十六分音符的节奏型&#xff0c;如图1。 后附点指的是一个十六分音符加一个附点八分音符的节奏型&#xff0c;如图2。 前附点、后附点这两…

QLabelQPushButton和QLineEdit

QLabel 设置文件格式字体颜色背景 源码 设置图片 源码 设置gif 设置文本 源码 富文本 (Rich Text): 格式化选项&#xff1a;富文本支持各种格式化选项&#xff0c;如字体样式&#xff08;粗体、斜体&#xff09;、字体大小、颜色、超链接、图片插入、列表、表格等。文件格式&a…

基于ssm的企业在线培训系统论文

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装企业在线培训系统软件来发挥其高效地信息处理的作用&#x…

TransNeXt:稳健的注视感知ViT学习笔记

论文地址&#xff1a;https://arxiv.org/pdf/2311.17132.pdf 代码地址&#xff1a; GitHub - DaiShiResearch/TransNeXt: Code release for TransNeXt model 可以直接在ImageNet上训练的分类代码&#xff1a;GitHub - athrunsunny/TransNext-classify 代码中读取数据的部分修改…

低信噪比环境下的语音端点检测

端点检测技术 是 语音信号处理 的关键技术之一为提高低信噪比环境下端点检测的准确率和稳健性&#xff0c;提出了一种非平稳噪声抑制和调制域谱减结合功率 归一化 倒谱距离的端点检测算法 1 端点检测 1-1 定义 定义&#xff1a;在 存在背景噪声 的情况下检测出 语音的起始点和…

关于Java并发、JVM面试题

前言 之前为了准备面试&#xff0c;收集整理了一些面试题。 本篇文章更新时间2023年12月27日。 最新的内容可以看我的原文&#xff1a;https://www.yuque.com/wfzx/ninzck/cbf0cxkrr6s1kniv 并发 进程与线程的区别 线程属于进程&#xff0c;进程可以拥有多个线程。进程独享…

TDengine 公布 2023 年发展“成绩”,六大亮点引人瞩目

今天&#xff0c;我们进行了 2023 年重大成就和发展成绩盘点&#xff0c;主要归纳为产品创新、市场发展、开源社区、生态建设、活动布道与奖项荣誉六大维度。在元旦前夕&#xff0c;我们也想把这份“2023 年成绩单”分享给所有关注 TDengine 的朋友们。 在今年&#xff0c;最值…

第八章 javascript字符(string)的介绍和使用

文章目录 一、什么是字符二、什么是包装数据类型&#xff08;了解&#xff09;三、创建字符串四、字符串操作五、字符编码和字符集ASCII&#xff08;as key&#xff09; 字符集&#xff08;了解&#xff09;unicode 编码 ***国标编码GBK&#xff08;汉字内码扩展规范&#xff0…

UEFI模拟环境搭建——windows+EDKII

目录 0 说明 1 安装软件 1.1 VS2019的安装 1.2 Python的安装 1.3 IASL的安装 1.4 NASM的安装 1.5 git的下载 2 EDKII的下载 3 配置环境 0 说明 个人感觉UEFI的环境搭建非常复杂&#xff0c;在经过很长一段折磨后&#xff0c;终于还是搭建成功&#xff0c;写下来记录一…

YOLOv8训练自定义数据集和运行参数解读

1、YOLOv8深度学习环境搭建及安装 1.1. Yolov8介绍 设置操作类型 YOLOv8模型可用于各种任务&#xff0c;包括检测、分割和分类。这些任务的不同之处在于它们产生的输出类型和它们要解决的特定问题。 **检测:**检测任务涉及识别和定位图像或视频中感兴趣的对象或区域。YOLO模…

0基础学习VR全景平台篇第132篇:曝光三要素—快门速度

上课&#xff01;全体起立~ 大家好&#xff0c;欢迎观看蛙色官方系列全景摄影课程&#xff01; 经过前面两节课的学习我们认识了曝光三要素中的感光度和光圈&#xff0c;这节课我们将一同去了解影响曝光的最后一个要素——快门速度。 (曝光三要素&#xff1a;感光度、光圈、…

所有逐个位置相加的方法

989. 【加法模板】秒杀所有逐位相加 参考教程

算法设计与分析 | 矩阵连乘

题目描述 一个n*m矩阵由n行m列共n*m个数排列而成。两个矩阵A和B可以相乘当且仅当A的列数等于B的行数。一个N*M的矩阵乘以一个M*P的矩阵等于一个N*P的矩阵&#xff0c;运算量为nmp。 矩阵乘法满足结合律&#xff0c;A*B*C可以表示成(A*B)*C或者是A*(B*C)&#xff0c;两者的运算…

CSS 纵向扩展动画

上干货 <template><!-- mouseenter"startAnimation" 表示在鼠标进入元素时触发 startAnimation 方法。mouseleave"stopAnimation" 表示在鼠标离开元素时触发 stopAnimation 方法。 --><!-- 容器元素 --><div class"container&q…