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,一经查实,立即删除!

相关文章

本周LLM新鲜事

LLM Weekly 2024-5-W5 &#x1f389; 新品速递 Baichuan 4&#xff1a;百川智能发布的新一代基座大模型&#xff0c;结合首款AI助手「百小应」&#xff0c;具备多轮搜索和定向搜索能力&#xff0c;可以解决各种问题&#xff0c;并将搜索结果嵌入回答中。Baichuan 4在SuperCLUE…

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信息通过该工具向实验室转发该信息。并将实验室…

cesium学习6-相机camera

视角设置 viewer.camera.setView({destination:Cesium.Cartesian3.fromDegrees(118.0658439,24.5915414,2500),//目的地orientation:{heading:Cesium.Math.toDegrees(0),//左右平移0pitch:Cesium.Math.toDegrees(90),//上下点头90roll:Cesium.Math.toDegrees(0),//歪头0}}) 相机…

解析Java中1000个常用类:Deprecated类,你学会了吗?

在 Java 编程中,随着技术的发展和代码库的演进,旧的方法、类或接口可能会逐渐被新的替代方案取代。为了管理这些过时的代码,Java 提供了 @Deprecated 注解。 本文将深入探讨 @Deprecated 注解的功能、用法、实际应用中的注意事项,以及如何有效地管理和替换过时的代码。 @…

linux-gpio

在Linux shell中测试GPIO通信&#xff0c;通常需要使用GPIO的设备文件&#xff0c;这些文件通常位于/sys/class/gpio目录下。要使用特定的GPIO引脚&#xff0c;比如GPIO92&#xff0c;你需要执行以下步骤&#xff1a; 导出GPIO引脚&#xff1a;首先&#xff0c;需要确保GPIO92已…

Window系统安装Docker

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

堆排序-普通建堆与线性建堆的比较

前言 个人小记 一、代码如下 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #define MAX_COUNT 100000000 #define father(i) ((i)/2) #define left(i) ((i)*2) #define right(i) ((i)*2)1 #define TEST(func,a…

centos 7 编译安装 php-8.2.19

1.、安装编译工具及库文件&#xff08;使用yum命令安装&#xff09; yum install -y apr* autoconf automake bison bzip2 bzip2* cloog-ppl cpp curl curl-devel fontconfig fontconfig-devel freetype freetype* freetype-devel gcc gcc-c gtk-devel gd gettext gettext-de…

Vue3实战笔记(55)—Vue3.4新特性揭秘:defineModel重塑v-model,拥抱高效双向数据流!

文章目录 前言defineModel() 基本用法总结 前言 v-model 可以在组件上使用以实现双向绑定。 从 Vue 3.4 开始&#xff0c;推荐的实现方式是使用 defineModel() 宏 defineModel() 基本用法 定义defineModel()&#xff1a; <!-- Child.vue --> <script setup> con…