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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【SpringMVC】_设置响应状态码与Header

目录 1. 设置响应状态码 2. 设置响应Header 2.1 设置Content-Type 2.1.1 不使用RequestMapping的produce属性 2.1.2 使用RequestMapping的produce属性 2.2 设置/新增其他Header 1. 设置响应状态码 Spring是基于servlet实现的&#xff0c;设置HTTP响应的状态码可以通过se…

Flink实现实时异常登陆监控(两秒内多次登陆失败进行异常行为标记)

Flink实现异常登陆监控&#xff08;两秒内多次登陆失败进行异常行为标记&#xff09; 在大数据处理领域&#xff0c;Apache Flink 是一个流行的开源流处理框架&#xff0c;能够高效处理实时数据流。在这篇博客中&#xff0c;我们将展示如何使用 Apache Flink 从 MySQL 中读取数…

docker compose完成简单项目部署

1. 项目环境 centos7 docker mysql redis ruoyi项目 ruoyi项目链接&#xff1a;https://gitee.com/y_project/RuoYi-Vue.git 2. 进行项目前后端代码打包 后端打包&#xff1a; 修改mysql连接的相关配置文件 RuoYi-Vue/ruoyi-admin/src/main/resources/application-dru…

Scroll 上的明星项目Pencils Protocol ,缘何被严重低估?

近日&#xff0c;完成品牌升级的 Pencils Prtocol 结束了 Season 2 并无缝开启了 Season 3&#xff0c;在 Season 3 中&#xff0c;用户可以通过质押系列资产包括 $ETH、$USDT、$USDC、$STONE 、$wrsETH、$pufETH 等来获得可观收益&#xff0c;并获得包括 Scroll Marks、 Penci…

深入理解flask规则构建与动态变量应用

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言 二、Flask规则基础 1. 静态规则与动态规则 2. 规则语法与结构 三、动态变量应用…

chrome谷歌浏览器开启Gemini Nano模型

前提 确保您的操作系统语言设置为英语(美国) 可能还需要将 Chrome 浏览器的语言更改为英语(美国)。 下载dev或Canary版本Chrome Chrome Canary Chrome Dev 注意:确认您的版本高于 127.0.6512.0。 其中一个Chrome版本不行就切换另外一个版本 绕过性能检查 Tab输入: …

【高校科研前沿】南大王栋、吴吉春教授团队在深度学习助力水库生态调度和优化管理方面取得新进展,成果以博士生邱如健为一作发表于水环境领域国际权威期刊

1.文章简介 论文名称&#xff1a;Integration of deep learning and improved multi-objective algorithm to optimize reservoir operation for balancing human and downstream ecological needs 第一作者及单位&#xff1a;邱如健&#xff08;博士生 南京大学&#xff09;…

电商物流查询解决方案助力提升消费者体验

截至2023年12月&#xff0c;中国网络购物用户规模达9.15亿人&#xff0c;占网民整体的83.8%。这一庞大的数字不仅展现了电子商务的蓬勃发展&#xff0c;也标志着数字零售企业营销战略的转变——从以产品和流量为核心&#xff0c;到用户为王的新阶段。因此&#xff0c;提升消费者…

【Mac】 Infuse for Mac(多媒体播放器) v7.7.6软件介绍和安装

软件介绍 Infuse Pro是一款非常强大的视频播放器&#xff0c;它被誉为 Apple TV上最强的播放器。它支持广泛的视频格式和解码器&#xff0c;包括DTS、DTS-HD、AC3、E-AC3等高清视频的音频播放任务。此外&#xff0c;Infuse Pro还支持所有常见的高清格式。 Infuse Pro的特点之…

MySQL基础索引知识【索引创建删除 | MyISAM InnoDB引擎原理认识】

博客主页&#xff1a;花果山~程序猿-CSDN博客 文章分栏&#xff1a;MySQL之旅_花果山~程序猿的博客-CSDN博客 关注我一起学习&#xff0c;一起进步&#xff0c;一起探索编程的无限可能吧&#xff01;让我们一起努力&#xff0c;一起成长&#xff01; 目录 一&#xff0c;索引用…

java.lang.NoClassDefFoundError: org/dom4j/io/SAXReader

问题描述&#xff1a;在maven项目中&#xff0c;给SAXReader创建实例&#xff0c;启动tomcat服务器后报异常java.lang.NoClassDefFoundError: org/dom4j/io/SAXReader。我在pom文件中是引入了dom4j依赖得&#xff0c;但是不知道为什么在上传到web时就找不到了 解决办法&#x…

数据结构与算法 :数据结构绪论,时间和空间复杂度 推导大O阶

各位少年 大家好 我是博主那一脸阳光&#xff0c;今天开始给大家分享数据结构&#xff0c;由于我个人当初学的时候是自学&#xff0c;并没有看培训机构的视频 所以接下来我分享的数据结构的内容&#xff0c;源头来自一本书叫做大话数据结构。顺便一提为了方面大家理解&#xff…

信息学奥赛初赛天天练-17-阅读理解-浮点数精准输出与海伦公式的巧妙应用

PDF文档公众号回复关键字:20240531 1 2023 CSP-J 阅读程序1 阅读程序&#xff08;程序输入不超过数组成字符串定义的范围&#xff1a;判断题正确填√&#xff0c;错误填&#xff1b;除特殊说明外&#xff0c;判断题1.5分&#xff0c;选择题3分&#xff0c;共计40分&#xff0…

二叉树的顺序实现-堆

一、什么是堆 在数据结构中&#xff0c;堆&#xff08;Heap&#xff09;是一种特殊的树形数据结构&#xff0c;用数组存储&#xff0c;通常被用来实现优先队列。 堆具有以下特点&#xff1a; 堆是一棵完全二叉树&#xff08;Complete Binary Tree&#xff09;&#xff0c;即…

#centos7搭建php8+nginx环境#

场景:为了实现上传的pdf文件转成png图片,需要搭建一个php8nginx的运行环境&#xff0c;最后安装imagic扩展 安装顺序 php-> linux-> imagemagick -> ghostscript -> imagick 一&#xff1a;安装phpnginx环境 1、安装remi扩展源 remi源是Remi repository是包含最新…

Superset二次开发之更新 SECRET_KEY

SECRET_KEY 的作用 加密和签名:SECRET_KEY用于对敏感数据(如会话、cookie、CSRF令牌)进行加密和签名,防止数据被篡改。安全性:确保应用的安全性,防止跨站请求伪造(CSRF)攻击和会话劫持等安全问题。如何生成 SECRET_KEY openssl rand -base64 42 配置 SECRET_KEY 在sup…

linux开发之设备树六、linux下pinctrl子系统管理设置pin管脚的复用功能(一般原厂提供)

客户端的编写格式是固定的&#xff0c;不管哪家原厂的处理器&#xff0c;格式都是一样的 对于服务端部分是原厂提供&#xff0c;各个芯片肯定就不一样了&#xff0c;主要在于编写的格式不同 pinctrl客户端写法 使用pinctrl设置管脚复用 在kernel/arch/arm64/boot/dts/rockchi…

六一见!|Post Microsoft Build and AI Day 上海开发者日

编辑/排版&#xff1a;Alan Wang 大小朋友明天见&#xff01; 6月1日&#xff0c;Microsoft Azure & Microsoft Reactor 面向大小朋友特别推出六一特辑&#xff0c;「Post Microsoft Build and AI Day 上海开发者日」 探讨 Microsoft Build 2024 带来的最新发布&#xff0…

Java常用API(三)

一、Arrays类 1.定义 Arrays是一个用于操作数组的工具类。 2.常用方法 1.toString方法 public class Demo {public static void main(String[] args) {//toString 将数组变成字符串int[] arr {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};System.out.println(Arrays.toString(arr));…