【012】C++循环控制语句 for 和 while 详解

news2024/11/25 21:19:03

C++循环控制语句 for 和 while 详解

  • 引言
  • 一、循环控制语句 for
    • 1.1、for 循环语句
    • 1.2、break和continue
    • 1.3、for循环的嵌套
  • 二、循环控制语句while
    • 2.1、while循环语句
    • 2.2、break和continue
    • 2.3、do...while()循环语句
  • 总结

引言


💡 作者简介:专注于C/C++高性能程序设计和开发,理论与代码实践结合,让世界没有难学的技术。包括C/C++、Linux、MySQL、Redis、TCP/IP、协程、网络编程等。
👉
🎖️ CSDN实力新星,社区专家博主
👉
🔔 专栏介绍:从零到c++精通的学习之路。内容包括C++基础编程、中级编程、高级编程;掌握各个知识点。
👉
🔔 专栏地址:C++从零开始到精通
👉
🔔 博客主页:https://blog.csdn.net/Long_xu


🔔 上一篇:【011】C++选择控制语句 if 和 switch 详解

一、循环控制语句 for

1.1、for 循环语句

C++中的for循环语句是一种重复执行某段代码块的结构化控制语句。通常用于对一定次数或范围内的操作进行循环处理。

for循环的基本语法如下:

for (初始化表达式; 条件表达式; 更新表达式) {
    // 待执行的代码块
}

其中,初始化表达式用于定义并初始化一个计数器变量,条件表达式用于判断是否满足循环条件,更新表达式则在每次循环结束后更新计数器变量。在执行完初始化表达式后,程序将检查条件表达式。如果条件为真,则会执行代码块中的内容;否则跳出循环。

以下是一个简单的例子,使用for循环输出数字1到5:

#include <iostream>
using namespace std;

int main() {
    for (int i = 1; i <= 5; i++) {
        cout << i << endl;
    }
    return 0;
}

在上面的示例中,定义了一个整型变量i,并将其赋值为1。然后设置了一个条件:只要i小于等于5就继续执行循环。每次循环完成之后,i都会自增1,直到i大于5为止。

需要注意的是,在使用for循环时要确保计数器变量不会无限增长或减少而导致死循环。因此,循环条件表达式中的计数器变量应该逐步趋近于某个限定值,并在一定条件下停止循环。

1.2、break和continue

break是跳出当前的循环。
示例:

// 只加到了49
int i=0;sum=0;
for(i=0;i<=100;i++)
{
	if(i==50)
		break;
	sum+=i;
}

continue是进入下一个循环。
示例:

// 跳过i=50那一次
int i=0,sum=0;
for(i=0;i<=100;i++)
{
	if(i==50)
		continue;
	sum+=i;
}

1.3、for循环的嵌套

在C++中,for循环的嵌套for循环是非常常见的编程技巧。它允许我们在内部循环中遍历一个数据结构,并且对于每个元素,在外部循环中执行某些操作。

以下是一个简单的示例程序,展示如何使用嵌套for循环来打印乘法表:

#include <iostream>

int main()
{
    for (int i = 1; i <= 10; ++i)
    {
        for (int j = 1; j <= 10; ++j)
        {
            std::cout << i * j << "\t";
        }
        std::cout << std::endl;
    }

    return 0;
}

在上面的程序中,有两个嵌套的for循环。外部循环控制行数,内部循环控制列数。每次内部循环迭代时,我们将当前行和列相乘,并打印到屏幕上。
在这里插入图片描述

需要注意的是,在使用嵌套for循环时要小心不要陷入死循环中。确保设置了正确的终止条件以及每次迭代都能正常退出。此外,如果多层嵌套过多可能会影响代码性能,请尽量减少不必要的嵌套。

二、循环控制语句while

2.1、while循环语句

当需要重复执行某些语句块时,可以使用while循环语句。它的基本语法如下:

while (条件表达式)
{
   // 待执行的语句块
}

在while循环中,当条件表达式为true时,就会一直执行待执行的语句块,直到条件表达式变为false或者程序被强制结束。

下面是一个简单的例子,演示如何使用while循环来计算1到10之间整数的和:

#include <iostream>
using namespace std;

int main()
{
    int i = 1;
    int sum = 0;

    while(i <= 10)
    {
        sum += i;
        i++;
    }

    cout << "The sum of integers from 1 to 10 is: " << sum << endl;

    return 0;
}

在上述代码中,变量i用于迭代值,在每次迭代时都会递增。变量sum用于保存所求和。当i小于等于10时,while循环将会继续执行,并且在每次迭代中将当前值加入到sum中。最后输出结果。

注意:如果条件表达式初始值为false,则不会进入循环体;如果没有更新循环控制变量(比如忘记了i++),则可能会导致无限循环,程序陷入死循环状态。因此,在编写代码时请务必注意以上问题并进行正确的处理。

2.2、break和continue

break是跳出当前的循环。
示例:

// 只加到了49
int i=0;sum=0;
while(i<=100)
{
	if(i==50)
		break;
	sum+=i;
	i++}

continue是进入下一个循环。
示例:

// 在i=50时会进入死循环
int i=0;sum=0;
while(i<=100)
{
	if(i==50)
		break;
	sum+=i;
	i++}

可以改成:

// 跳过50
int i=0;sum=0;
while(i<=100)
{
	sum+=i;
	i++if(i==50)
		break;
	
}

2.3、do…while()循环语句

do-while循环与while循环类似,不同之处是它会先执行一遍待执行的语句块再进行条件判断。其基本语法如下:

do
{
    // 待执行的语句块
}
while (条件表达式);

在do-while循环中,当条件表达式为true时,就会一直执行待执行的语句块,直到条件表达式变为false或者程序被强制结束。

总结

C++提供了三种循环控制语句:for循环、while循环和do-while循环。它们的主要区别在于条件判断的位置和执行顺序。下面对这三种循环控制语句进行总结:

  1. for循环。for循环通常用于已知重复次数的情况下,在for循环中,初始化表达式只会在第一次迭代前执行一次,更新表达式则在每次迭代后执行一次。只有当条件表达式为true时,才会进入待执行的语句块。

  2. while循环。while循环通常用于不确定重复次数但需要先进行判断的情况下,在while循环中,当条件表达式为true时,就会一直执行待执行的语句块,直到条件表达式变为false或者程序被强制结束。

  3. do-while循环。

除了这三种基本循环控制语句外,C++还提供了两个关键字用于控制循环:break和continue。break关键字可以跳出当前循环,而continue关键字则可以跳过本次迭代并继续进行下一次迭代。
在这里插入图片描述

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

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

相关文章

【JavaSE】Java基础语法(九):封装

文章目录 ☔1. private关键字☔2. private关键字的使用☔3. this关键字☔4. this内存原理☔5. 封装思想 ☔1. private关键字 概述 : private是一个修饰符&#xff0c;可以用来修饰成员&#xff08;成员变量&#xff0c;成员方法&#xff09; 特点 : 被private修饰的成员&…

公网远程连接Redis数据库【内网穿透】

文章目录 1. Linux(centos8)安装redis数据库2. 配置redis数据库3. 内网穿透3.1 安装cpolar内网穿透3.2 创建隧道映射本地端口 4. 配置固定TCP端口地址4.1 保留一个固定tcp地址4.2 配置固定TCP地址4.3 使用固定的tcp地址连接 转发自cpolar内网穿透的文章&#xff1a;公网远程连接…

(El-button-group)解决:优化 el-button 实现 button 相连且动态切换的使用案例(涉及:动态绑定 class )

Ⅰ、Element-ui 提供的组件与想要目标情况的对比&#xff1a; 1、Element-ui 提供组件情况&#xff1a; 其一、Element-ui 自提供的代码情况为(示例的代码&#xff0c;例子如下)&#xff1a; // Element-ui 自提供的代码&#xff1a; <template><div><el-but…

深度解析多线程的创建方式和正确启动多线程

一、创建多线程 1. 实现多线程 java 实现多线程的方式准确来说有两种&#xff08;oracle官方文档说的&#xff09;&#xff1a; &#xff08;1&#xff09;实现 Runnable 接口&#xff0c; 重写run()函数&#xff0c;运行start()方法 代码演示&#xff1a; /*** 用Runnable…

移动端浏览器性能优化探索

在移动端的页面开发过程中&#xff0c;我们经常提及页面性能优化、消除页面卡顿的话题&#xff0c;如何确定优化策略&#xff0c;我们首先应当对页面卡顿的行为有所认知。 前言 &#xfeff; 页面的卡顿现象可以比较明确的分为三个类型&#xff0c;分别是 “画面撕裂” 、“丢帧…

让你不再好奇怎么给小说配音

你是否曾经想象过&#xff0c;当你在读小说时&#xff0c;你可以听到人物的声音&#xff0c;感受到情感和气氛的变化&#xff1f;有声书的出现已经让这一切成为可能。然而&#xff0c;如何为小说创造生动的配音效果却是一个需要仔细考虑的问题。如果你还不知道怎么给小说配音的…

酷开会员丨版权时代,酷开科技打造更多优质内容服务消费者

以版权产业为核心的文化产业&#xff0c;需要重视版权、鼓励创新&#xff0c;才能形成文化创新的环境与氛围&#xff0c;这也是版权时代的发展趋势。在版权时代&#xff0c;付费观看是基本意识&#xff0c;比如电视内容供应方提供了大量免费的资源&#xff0c;观众为观看更精良…

数据结构之二叉树的基本实现

在我们之前已经了解的堆这样的完全二叉树的实现&#xff0c;也对树型结构有了一些了解&#xff0c;那么今天我们来看看二叉树的一些性质。 因为二叉树是一种每个节点至多只有两个子树&#xff08;即二叉树的每个节点的度不大于2&#xff09;&#xff0c;并且二叉树的子树有左右…

二、Django REST Framework (DRF)序列化反序列化数据校验

参考&#xff1a; DRF 官方文档&#xff1a; Serializers - Django REST framework中文站点 为什么要学DRF和什么是REST API | 大江狗的博客 上一章&#xff1a; 一、Django REST Framework (DRF)& RESTful 风格api_做测试的喵酱的博客-CSDN博客 下一章&#xff1a;…

【C++】类和对象(中上):类的六个默认成员函数——构造函数、析构函数、拷贝构造函数!

目录 前言&#xff1a; 一、类的默认成员函数&#xff1a; 二、构造函数&#xff1a; 1.特性&#xff1a; 构造函数调用规则&#xff1a; 1.无参数的构造函数&#xff08;默认构造函数&#xff09;&#xff1a; 2.带参数的构造函数&#xff1a; 3.全缺省的构造函数&…

Qt编写视频监控系统75-计算实时码率并显示

一、前言 做监控摄像头的实时视频显示&#xff0c;一般还会要求统计实时码率显示在通道画面上&#xff0c;一个是为了测试下整个软件的性能&#xff0c;同时也看下当前到底是主码流还是子码流&#xff0c;设备到底是不是真的按照设定的码流大小来传输视频数据的。视频码率就是…

【Mysql】 数据类型

文章目录 【Mysql】 数据类型数据类型分类数值类型1. tinyint类型2. bit类型3. 小数类型 字符串类型1.char2.varchar3. 日期和时间类型4. enum 和 set 【Mysql】 数据类型 mysql中数据类型的作用&#xff1a; 约束操作者的行为更清晰的代码逻辑不同的功用 – 例如&#xff0c…

【JavaSE】Java基础语法(八)

文章目录 &#x1f353;1. 类和对象&#x1f379;&#x1f379;1.1 类和对象的关系&#x1f379;&#x1f379;1.2 类的定义 &#x1f353;2. 对象内存图&#x1f379;&#x1f379;2.1 单个对象内存图&#x1f379;&#x1f379;2.2 多个对象内存图2.3 多个对象指向相同内存图…

统计学_贾俊平——思考题第9章 分类数据分析

1&#xff0e;简述列联表的构造与列联表的分布。 答&#xff1a;列联表是将两个以上的变量进行交叉分类的频数分布表。 列联表的分布可以从两个方面看&#xff0c;一个是观察值的分布&#xff0c;又称为条件分布&#xff0c;每个具体的观察值就是条件频数&#xff1b;一个是期望…

【数据结构】树的认识

一个人的未来不是预测出来的&#xff0c;而是创造出来的。 -- 亚当詹姆斯目录 &#x1f341;前言&#xff1a; &#x1f340;一.什么是树&#xff1f; &#x1f351;二.树有什么用&#xff1f; ❤️1. 数据库 &#x1f9e1;2. 文件系统 &#x1…

chatgpt赋能python:PythonUSB摄像头-拍摄更美好的瞬间

Python USB摄像头 - 拍摄更美好的瞬间 在过去的几年中&#xff0c;摄影已经迅速成为了一种爆炸性的趋势。人们希望能够记录下人生中的美好瞬间&#xff0c;分享给全球的亲朋好友。而USB摄像头的普及与发展使得照片拍摄变得更加便利。而在这其中&#xff0c;Python也扮演了一个…

spingboot+jsp仓储型物流企业车辆运输管理系统

随着时代的进步,物流车辆运输行业也逐渐变得庞大起来。当然,物流车辆运输公司要想做大做强,就有必要有自己完整的一套物流车辆运输管理系统。这必将为物流管理公司提供规范化的管理模式,在各个部门之间有效的协调、合作过程中必将为物流车辆公司提供大量的客户生源,争取赢得最大…

6.4_7关键路径

上一节我们学的叫做AOV网&#xff08;activity on vertex&#xff09; 这一节我们是(activity on edge network) 顶点表示事件是一瞬间发生的事情。边上的权值表示完成该活动的开销。 AOE网中&#xff0c;有些事情是可以并行的。 前后活动之间存在依赖关系&#xff0c;我i们要知…

python绘制密度图

本期目录 1、绘图参数2、使用 matplotlib 库绘制密度图时常用的参数3、案例4、 运行结果python绘图往期系列文章目录 1、绘图参数 可以使用多种库来绘制密度图&#xff0c;其中最常用的是 seaborn 和 matplotlib。以下是使用 seaborn 库绘制密度图时常用的参数&#xff1a; i…

简历上,我写精通 JUC 的底气

真的假的&#xff0c;你简历上敢写精通 JUC &#xff1f; 是真学到精通了&#xff0c;还是说只学到了个皮毛就写精通&#xff0c;从而争取一个面试机会。 我相信&#xff0c;当很多人看到文章标题的第一反应也会如上面的一样&#xff0c;质疑、好奇。这很正常&#xff0c;如果…