C++青少年简明教程:While和Do-while循环语句

C++青少年简明教程:While和Do-while循环语句

C++的while和do-while语句都是循环控制语句,用于重复执行一段代码。while语句在循环开始前检查循环条件,而do-while语句在循环结束后检查循环条件。

使用while循环时,如果需要在每次迭代前都检查条件,可以选择while。
使用do-while循环时,如果需要确保循环体至少执行一次,可以选择do-while。

while语句

语法格式:

while(判断表达式)

    循环体

执行流程图:

当判断表达式(条件)为真时执行循环体;当条件为假时,程序流将循环语句后的语句。循环体是语句或语句块。

使用while循环计算1到10的累加和:

#include<iostream>
using namespace std;int main(){int n = 10;int sum = 0;int i = 1;while (i <= n) {sum += i;i++;}cout << "1到" << n << "的累加和为:" << sum << endl;
}

其中sum += i; 的意思是将i的值加到sum中,相当于 sum = sum + i;

i++ 的意思是将i的值加1,相当于 i = i + 1;

首先,定义了三个变量:n、sum和i。n的值为10,sum初始化为0,i初始化为1。

然后,使用while循环计算累加和。循环条件是i小于等于n,即只要i的值不大于n,就继续循环。循环体内的语句是累加i到sum中,然后将i的值加1,以便下一次循环累加下一个数。循环结束后,sum中就存储了1到n之间所有整数的和。

前面“if选择语句”一节给出判断一个年份是否为闰年程序,每次运行只能判断一个年份,如何判断多次呢?

如果您想要程序能够多次判断不同的年份是否为闰年,您可以使用一个循环结构,如while循环或for循环,来重复获取用户输入并判断。下面是一个使用while循环的示例代码:

#include <iostream>  
using namespace std;int main() {  int year;  bool keepRunning = true; // 标志位,用于控制循环是否继续  while (keepRunning) {  cout << "请输入一个年份(输入数字0退出): ";  cin >> year;  // 如果用户输入0,则退出循环  if (year == 0) {  keepRunning = false;  } else {  // 判断是否为闰年  if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {  cout << year << " 是闰年." << endl;  } else {  cout << year << " 不是闰年." << endl;  }  }  }  return 0;  
}

Do-while语句

语法格式:

Do

循环体

while(判断表达式);

执行流程图:

条件表达式出现在循环的尾部,所以循环体会在条件被测试之前就执行了一次,也就是这个语句的循环体中的语句会被至少执行一次。

如果条件为真,就会执行循环体,这个过程会不断重复,直到给定条件变为假为止。

使用Do-while语句计算1到10的累加和:

int sum = 0, i = 1, n = 10;
do {sum += i;i++;
} while (i <= n);cout << "1到" << n << "的整数之和为:" << sum << endl;

while语句在进入循环体之前检查条件,如果条件一开始就为假,则循环体一次也不会执行。当希望在进入循环体之前检查条件时,使用while循环。

do-while语句先执行一次循环体,然后再检查条件,这确保了循环体至少执行一次。当希望至少执行一次循环体,然后再检查条件时,使用do-while循环。

while和do-while循环可以单独嵌套,也可以相互嵌套。

下面是一个示例代码,展示了 while 循环和 do-while 循环的相互嵌套使用:

#include <iostream>
using namespace std;int main() {int i = 1;int j = 1;while (i <= 3) {cout << "外部循环,i = " << i << endl;do {cout << "  内部循环,j = " << j << endl;j++;} while (j <= 2);i++;j = 1;}return 0;
}

在运行上述代码时,你将会看到如下输出:

外部循环,i = 1
  内部循环,j = 1
  内部循环,j = 2
外部循环,i = 2
  内部循环,j = 1
  内部循环,j = 2
外部循环,i = 3
  内部循环,j = 1
  内部循环,j = 2

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

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

相关文章

12V升20V3.5A升压恒压WT3207

12V升20V3.5A升压恒压WT3207 WT3207是一款高效PWM升压控制器&#xff0c;采用SO-8封装设计&#xff0c;专为低输入电压应用优化。该控制器支持5V至36V的宽输入电压范围&#xff0c;使其能够有效提升12V、15V和19V系统的电压水平&#xff0c;特别适合于两节或三节锂离子电池供电…

LabVIEW超声波局部放电检测系统开发

LabVIEW超声波局部放电检测系统开发 在高压电力系统中&#xff0c;局部放电(PD)是导致绝缘失效的主要原因之一。局部放电的检测对于确保电力系统的可靠运行至关重要。开发了一种基于LabVIEW软件的超声波局部放电检测系统的设计与实现。该系统利用数字信号处理技术&#xff0c;…

Python | Leetcode Python题解之第119题杨辉三角II

题目&#xff1a; 题解&#xff1a; class Solution:def getRow(self, rowIndex: int) -> List[int]:row [1, 1]if rowIndex < 1:return row[:rowIndex 1]elif rowIndex > 2:for i in range(rowIndex - 1):row [row[j] row[j 1] for j in range(i 1)]row.inser…

【Python入门学习笔记】Python3超详细的入门学习笔记,非常详细(适合小白入门学习)

Python3基础 想要获取pdf或markdown格式的笔记文件点击以下链接获取 Python入门学习笔记点击我获取 1&#xff0c;Python3 基础语法 1-1 编码 默认情况下&#xff0c;Python 3 源码文件以 UTF-8 编码&#xff0c;所有字符串都是 unicode 字符串。 当然你也可以为源码文件指…

【数据结构】二叉树运用及相关例题

文章目录 前言查第K层的节点个数判断该二叉树是否为完全二叉树例题一 - Leetcode - 226反转二叉树例题一 - Leetcode - 110平衡二叉树 前言 在笔者的前几篇篇博客中介绍了二叉树的基本概念及基本实现方法&#xff0c;有兴趣的朋友自己移步看看。 这篇文章主要介绍一下二叉树的…

iframe内嵌网页自适应缩放 以展示源网页的比例尺寸

需求:这是我最近开发的低代码平台遇到的需求 ,要求将配置好的应用在弹框中预览(将预览网页内嵌入弹框中) 但是内嵌进入后 他会截取一部分(我源网站网页尺寸 是1980x1080 或者 3060X2160等等) 但是我这个dialog弹框只有我自定义的1000多px的宽高 他只会展示我iframe网页的一部分…

Linux - 磁盘管理1

1.磁盘的分区 1.1 磁盘的类型&#xff08;标签&#xff09; MBR&#xff1a; ① 最大支持2T以内的硬盘 ② 有主分区p 拓展分区e 逻辑分区l之分 > 主分区编号1-4&#xff0c;主分区可以格式化使用 拓展分区编号1-4&#xff0c;拓展分区不能格式化 拓展分区最多能有1个&…

C++11中的新特性(2)

C11 1 可变参数模板2 emplace_back函数3 lambda表达式3.1 捕捉列表的作用3.2 lambda表达式底层原理 4 包装器5 bind函数的使用 1 可变参数模板 在C11之前&#xff0c;模板利用class关键字定义了几个参数&#xff0c;那么我们在编译推演中&#xff0c;我们就必须传入对应的参数…

Leetcode:Z 字形变换

题目链接&#xff1a;6. Z 字形变换 - 力扣&#xff08;LeetCode&#xff09; 普通版本&#xff08;二维矩阵的直接读写&#xff09; 解决办法&#xff1a;直接依据题目要求新建并填写一个二维数组&#xff0c;最后再将该二维数组中的有效字符按从左到右、从上到下的顺序读取并…

umijs+react+ts项目代码一片红处处报错解决

报错问题现象 1、在没有 "node" 模块解析策略的情况下&#xff0c;无法指定选项 "-resolveJsonModule"。 2、类型“JSX.IntrinsicElements”上不存在属性“div”。 解决办法 试了很多都没用&#xff0c;最后是参考这位朋友的解决了 vitevue3搭建工程标…

一个HL7的模拟工具

这个模拟器是为了过&#xff08; NIST美国国家标准与技术研究院&#xff08;National Institute of Standards and Technology&#xff0c;NIST&#xff09;的电子病历住院部分的认证而写的。 用途说明 inpatient中的lab order信息通过该工具向实验室转发该信息。并将实验室…

Window系统安装Docker

因为docker只适合在liunx系统上运行&#xff0c;如果在window上安装的话&#xff0c;就需要开启window的虚拟化&#xff0c;打开控制面板&#xff0c;点击程序&#xff0c;在程序和功能中可以看到启动和关闭window功能&#xff0c;点开后&#xff0c;找到Hyper-V&#xff0c;Wi…

Conditional DETR解读---带anchor的DETR

DETR存在的问题 1.收敛速度慢 2.对小目标物体检测效果不好&#xff0c;因为transformer计算量大&#xff0c;受限于计算规模&#xff0c;CNN提取特征时只采取了最后一层特征&#xff0c;没有用FPN等结构。所以对于小目标检测效果不好。 论文主要观点 通过对DETRdecoder中的a…

芋道系统,springboot+vue3+mysql实现地址的存储与显示

1.效果图 2.前端实现&#xff1a; <el-form-item label"地址" prop"entrepriseAddress"><el-cascaderv-model"formData.entrepriseAddress"size"large":options"region"/></el-form-item> //导入组件 im…

【JMeter接口自动化】第7讲 Jmeter三个重要组件

线程组:是JMeter中最基本的元素之一&#xff0c;用于模拟并发用户访问目标系统。线程组定义了测试计划中的用户数量、用户行为和用户请求之间的关系。 添加方法:测试计划->添加->线程(用户)->线程组 在线程组中&#xff0c;您可以设置以下参数&#xff1a; 线程数&a…

一种改进的形态学滤波算法-以心电信号的基线校正和噪声抑制为例(MATLAB环境)

信号在釆集和传输过程中难免受到噪声源的干扰&#xff0c;反映非线性动力学行为的特征信息有可能被噪声所掩盖。尤其是在混沌振动信号噪声抑制方面&#xff0c;因为混沌信号的高度非线性及宽频特性&#xff0c;噪声和混沌信号往往具有重叠的带宽。传统的时域及频域降噪方法效果…

神经网络-------人工神经网络

一、什么是神经网络和神经元 人工神经网络&#xff08;英语&#xff1a;Artificial Neural Network&#xff0c;ANN&#xff09;&#xff0c;简称 神经网络&#xff08;Neural Network&#xff0c;NN&#xff09;或 类神经网络&#xff0c;是一种模仿生物神经网络&#xff08;…

AI实时免费在线图片工具3:人物换脸、图像编辑

1、FaceAdapter 人物换脸 https://huggingface.co/spaces/FaceAdapter/FaceAdapter 2、InstaDrag https://github.com/magic-research/InstaDrag

计算机网络之快重传和快恢复以及TCP连接与释放的握手

快重传和快恢复 快重传可以让发送方尽早得知丢失消息&#xff0c; 当发送消息M1,M2&#xff0c;M3,M4,M5后,假如消息M2丢失&#xff0c;那么按照算法会发送对M2报文前一个报文M1的重复确认&#xff08;M1正常接受到&#xff0c;已经发送了确认),然后之后收到M4,M5,也会发送两…