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://www.mzph.cn/news/582406.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

购买腾讯云服务器需要多少钱?购买腾讯云服务器方法教程

腾讯云轻量应用服务器购买指南&#xff0c;有两个入口&#xff0c;一个是在特价活动上购买&#xff0c;一个是在轻量应用服务器官方页面购买&#xff0c;特价活动上购买价格更便宜&#xff0c;轻量2核2G3M带宽服务器62元一年起&#xff0c;阿腾云atengyun.com分享腾讯云轻量应用…

算法导论复习纲要

函数 1. 上界下界&#xff0c;紧确界的定义 2. 求解递推式&#xff0c;代入法&#xff0c;递归树法&#xff0c;主方法 分治算法 动态规划 1. 切割钢条&#xff1a;递归方法&#xff0c;动态的自上而下&#xff0c; 2. 矩阵乘法&#xff1a;最优子结构性的证明&#xff0c…

Go语言学习

1、运行和解析 go run 命令已包含了编译和运行。它会先在一个临时目录编译程序&#xff0c;然后执行完后清理掉. 如果在run的后面加上 --work参数来查看临时目录。 go run --work main.go也可以通过go build命令来编译代码&#xff0c;执行后会生成一个可以执行文件&#xff…

如何本地部署Nextcloud结合cpolar搭建专属私有云盘远程访问(内网穿透)

文章目录 摘要1. 环境搭建2. 测试局域网访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问 4 配置固定http公网地址4.1 保留一个二级子域名4.1 配置固定二级子域名4.3 测试访问公网固定二级子域名 摘要 Nextcloud,它是ownCloud的一个分支,是一个文件共享服…

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

题目描述 一个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;两者的运算…

什么是https证书?

HTTPS证书&#xff0c;也称为SSL&#xff08;Secure Sockets Layer&#xff09;证书或TLS&#xff08;Transport Layer Security&#xff09;证书&#xff0c;是一种数字证书&#xff0c;用于在网络上建立安全的加密连接。它的主要目的是确保在互联网上进行的数据传输的安全性和…

Android : 画布绘制矩形和文字 让其居中显示简单应用

示例图&#xff1a; CenterView.java package com.example.demo;import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.Log; import android.view.View;public class Center…

openGauss学习笔记-175 openGauss 数据库运维-备份与恢复-导入数据-管理并发写入操作示例

文章目录 openGauss学习笔记-175 openGauss 数据库运维-备份与恢复-导入数据-管理并发写入操作示例175.1 相同表的INSERT和DELETE并发175.2 相同表的并发INSERT175.3 相同表的并发UPDATE175.4 数据导入和查询的并发 openGauss学习笔记-175 openGauss 数据库运维-备份与恢复-导入…

训练和测试的loss、accuracy等数据保存到文件并读出

首先是写文件到excel import os.path from openpyxl import load_workbook import pandas as pd import matplotlib.pyplot as pltdef write_excel(excel_name, sheet_name, value):columns ["epoc", "train_loss", "train_acc", "test_a…

idea Spring Boot项目使用JPA创建与数据库链接

1.pom.xml文件中添加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>com.mysql</groupId><artifactId>…

创建和配置Spring MVC框架构建Web应用

1 认识Spring MVC Spring Web MVC是构建在Servlet API之上的Web框架&#xff0c;自诞生之时就被纳入了Spring框架中。其正式/官方名称为“Spring Web MVC”&#xff0c;源自其所属的模块&#xff08;spring-webmvc&#xff09;&#xff0c;但通常被称为“Spring MVC”。 1.1…

最短路径(数据结构实训)(难度系数100)

最短路径 描述&#xff1a; 已知一个城市的交通路线&#xff0c;经常要求从某一点出发到各地方的最短路径。例如有如下交通图&#xff1a; 则从A出发到各点的最短路径分别为&#xff1a; B&#xff1a;0 C&#xff1a;10 D&#xff1a;50 E&#xff1a;30 F&#xff1a;60 输…

go 源码解读 - sync.Mutex

sync.Mutex mutex简介mutex 方法源码标志位获取锁LocklockSlowUnlock怎么 调度 goroutineruntime 方法 mutex简介 mutex 是 一种实现互斥的同步原语。&#xff08;go-version 1.21&#xff09; &#xff08;还涉及到Go运行时的内部机制&#xff09;mutex 方法 Lock() 方法用于…

网盘项目话术(0.5w字精选)

功能结构图 数据库设计总结 该项目主要就是对文件的操作&#xff0c;file表&#xff0c;file_share表。 file表主要字段&#xff1a;id&#xff0c;用户id&#xff0c;父级目录id&#xff0c;文件的地址&#xff0c;文件的封面图片地址&#xff0c;创建和修改时间。 file_sha…

国际物流公司科普_集装箱种类区分和介绍_箱讯科技

集装箱运输的不断发展&#xff0c;为适应装载不同种类货物的需要&#xff0c;因而出现了不同种类的集装箱。今天和大家一起来总结一下。 按使用材料分类 根据箱子主体部件&#xff08;侧壁、端壁、箱顶等&#xff09;采用什么材料&#xff0c;就叫做什么材料制造的集装箱&…

TPRI-DMP平台介绍

TPRI-DMP平台介绍 TPRI-DMP平台概述 TPRI-DMP为华能集团西安热工院自主产权的工业云PaaS平台&#xff0c;已经过13年的发展和迭代&#xff0c;其具备大规模能源电力行业生产应用软件开发和运行能力。提供TPRI-DMP平台主数据管理、业务系统开发与运行、应用资源管理与运维监控…

【数据结构】C语言实现单链表的基本操作

单链表基本操作的实现 导言一、查找操作1.1 按位查找1.1.1 按位查找的C语言实现1.1.2 按位查找的时间复杂度 1.2 按值查找1.2.1 按值查找的C语言实现1.2.2 按值查找的时间复杂度 二、插入操作2.1 后插操作2.2 前插操作 三、删除操作结语 导言 大家好&#xff0c;很高兴又和大家…

C++ 之LeetCode刷题记录(三)

&#x1f604;&#x1f60a;&#x1f606;&#x1f603;&#x1f604;&#x1f60a;&#x1f606;&#x1f603; 开始cpp刷题之旅&#xff0c;多学多练&#xff0c;尽力而为。 先易后难&#xff0c;先刷简单的。 13、罗马数字转整数 罗马数字包含以下七种字符: I&#xff0c…

ClickHouse基础知识(二):ClickHouse 安装教程

1. 准备工作 1.1 确定防火墙处于关闭状态 1.2 CentOS 取消打开文件数限制 &#xff08;1&#xff09;在 hadoop101 的 /etc/security/limits.conf 文件的末尾加入以下内容 sudo vim /etc/security/limits.conf&#xff08;2&#xff09;在 hadoop101 的/etc/security/limits.…

Rocky9 1.28安装kubernetes

1.环境准备 二进制安装比较复杂&#xff0c;但是也比较稳定&#xff0c;适用于线上环境使用。   本笔记参考自&#xff1a;https://github.com/cby-chen/Kubernetes &#xff0c;针对文中内容&#xff0c;有部分镜像无法拉取等&#xff0c;还有一部分有点小问题&#xff0c;…