1、定义:
在 C++ 中,多层循环(嵌套循环)是指在一个循环体内包含另一个或多个循环语句。它常用于处理多维数据结构(如二维数组)、复杂的迭代逻辑(如矩阵运算、图形打印、组合遍历等)。多层循环的核心是外层循环控制 “轮次”,内层循环控制每轮的 “细节操作”,执行时先完整执行内层循环,再进入外层循环的下一次迭代。

2、多层循环的基本结构
多层循环可由for、while、do-while任意组合构成,最常用的是for循环的嵌套(结构清晰,适合已知循环次数的场景)。

双层for循环(最常见)
for (外层初始化; 外层循环条件; 外层迭代) {
// 外层循环体
for (内层初始化; 内层循环条件; 内层迭代) {
// 内层循环体(每次外层循环,内层会完整执行一遍)
}
}

for嵌套while:
for (int i = 0; i < 3; i++) {
int j = 0;
while (j < 2) {
cout << “i=” << i << “, j=” << j << endl;
j++;
}
}

while嵌套do-while:
int i = 0;
while (i < 2) {
int j = 0;
do {
cout << “i=” << i << “, j=” << j << endl;
j++;
} while (j < 3);
i++;
}

3、执行流程
以双层for循环为例,执行顺序为:
1)执行外层初始化(仅一次)。
2)判断外层循环条件:若为true,进入外层循环体;若为false,整个多层循环结束。
3)执行内层初始化(每次进入外层循环体时执行一次)。
4)判断内层循环条件:若为true,执行内层循环体,然后执行内层迭代,重复步骤 4;若为false,退出内层循环。
5)执行外层迭代,回到步骤 2,开始外层循环的下一次迭代。
示例执行过程:
for (int i = 0; i < 2; i++) { // 外层循环:i=0,1
for (int j = 0; j < 2; j++) { // 内层循环:j=0,1(每次i变化时,j从0重新开始)
cout << “i=” << i << “, j=” << j << " ";
}
cout << endl;
}

4、常见应用场景
1)二维数组的遍历
二维数组本质是 “数组的数组”,需通过外层循环控制行,内层循环控制列:
int matrix[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};

// 遍历二维数组并打印所有元素
for (int i = 0; i < 3; i++) { // 外层循环:控制行(0~2)
for (int j = 0; j < 4; j++) { // 内层循环:控制列(0~3)
cout << matrix[i][j] << “\t”;
}
cout << endl;
}
输出:
1 2 3 4
5 6 7 8
9 10 11 12
2) 图形打印(如矩形、三角形)
通过内层循环控制每行的字符数量,外层循环控制行数:
// 打印5行4列的矩形(组成)
for (int row = 0; row < 5; row++) { // 外层:5行
for (int col = 0; col < 4; col++) { // 内层:每行4个

cout << "* ";
}
cout << endl; // 每行结束换行
}
输出:






3)组合逻辑(如穷举法)
例如计算两个数的所有可能组合(1~3 之间的数对):
for (int a = 1; a <= 3; a++) {
for (int b = 1; b <= 3; b++) {
cout << “(” << a << “,” << b << ") ";
}
cout << endl;
}
输出:
(1,1) (1,2) (1,3)
(2,1) (2,2) (2,3)
(3,1) (3,2) (3,3)

5、多层循环的扩展(三层及以上)
理论上,循环可以嵌套任意多层(如三层循环处理三维数组),但需注意代码可读性和程序的执行效率。例如,遍历三维数组int arr[2][3][4]:
for (int i = 0; i < 2; i++) { // 第一层:深度
for (int j = 0; j < 3; j++) { // 第二层:行
for (int k = 0; k < 4; k++) { // 第三层:列
cout << arr[i][j][k] << " ";
}
cout << “\t”;
}
cout << endl;
}

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

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

相关文章

四、jenkins自动构建和设置邮箱

一、jenkins自动构建什么自动构建、有啥用&#xff1a;触发方式代码提交&#xff08;Git push&#xff09;定时任务&#xff08;如每天凌晨构建&#xff09;手动点击等方式&#xff08;立即执行&#xff09;执行内容从 Git/SVN 拉取最新代码运行编译&#xff08;如 Maven/Gradl…

【深度学习新浪潮】深入解析LLM关键概念:架构、优化与最新研究进展

1. Transformer架构与注意力机制 概念解析 Transformer是LLM的核心架构,由编码器和解码器组成,其核心创新是自注意力机制,通过计算输入序列中每个位置的关联权重,动态聚焦关键信息。自注意力机制的计算复杂度为O(n),在处理长序列时成为性能瓶颈。 代码示例:基础Transfo…

RAGflow图像解析与向量化分析

RAGflow图像解析与向量化分析 注:需要提前部署好ragflow,才方便一 一对应代码,部署教程:rag部署教程,这样才会方便后续更改 1. 图像解析流程 RAGflow通过多种解析器处理不同类型的文档,其中图像解析是一个重要组成部分。以下是RAGflow处理图像的主要流程: 1.1 PDF文…

千翼破界,百景赋能 | 2025深圳eVTOL展无人机场景应用专场即将启幕

在技术革新、应用深化、产业链协同升级及低空空域管理改革等多重政策红利驱动下&#xff0c;我国工业级无人机产业正迈入爆发式增长新阶段&#xff0c;持续引领民用无人机市场繁荣。数据显示&#xff0c;2019 至2024年&#xff0c;我国民用无人机市场规模从435.1亿元跃升至1108…

Go语言标识符命名规则详解:工程化实践

引言 Go语言的命名规则是其简洁哲学和工程实用性的集中体现。下面从语法规范、最佳实践到实际应用进行全面解析&#xff1a; 一、基础命名规则 1. 变量命名 // 小驼峰式&#xff08;lowerCamelCase&#xff09; var userName string var maxRetryCount 3 var isConnected bool…

RISC-V:开源芯浪潮下的技术突围与职业新赛道 (一)为什么RISC-V是颠覆性创新?

第一篇&#xff1a;开篇&#xff1a;为什么RISC-V是颠覆性创新&#xff1f; 打破70年架构垄断&#xff0c;开源硬件如何重塑芯片产业规则&#xff1f;一、传统架构的“围城之困”&#xff08;痛点切入&#xff09; ARM/X86的统治代价 授权费暴利模型 &#xff1a; ARM指令集授权…

【机器学习笔记 Ⅱ】7 多类分类

1. 多类分类&#xff08;Multi-class Classification&#xff09; 定义 多类分类是指目标变量&#xff08;标签&#xff09;有超过两个类别的分类任务。例如&#xff1a; 手写数字识别&#xff1a;10个类别&#xff08;0~9&#xff09;。图像分类&#xff1a;区分猫、狗、鸟等。…

2025年深圳杉川机器人性格测评和Verify测评SHL题库高分攻略

1、杉川机器人包含性格测评和Verify测评&#xff0c;预计用时60min&#xff0c;请确保作答时周围环境无干扰、网络畅通&#xff1b;2、请使用电脑完成作答&#xff0c;建议使用以下浏览器登录&#xff1a;IE9.0及以上版本&#xff0c;火狐&#xff0c;谷歌&#xff1b;3、杉川机…

【flutter 在最新版本中已经弃用了传统的 apply from 方式引入 Gradle 插件】

报错 Flutter assets will be downloaded from https://storage.flutter-io.cn. Make sure you trust this source! Launching lib\main.dart on 2112123AC in debug mode... Running Gradle task assembleDebug...FAILURE: Build failed with an exception.* Where: Script D…

Web后端实战:(部门管理)

1.准备工作 1.1开发规范 1.1.1前后端分离开发 我们目前基本都是采用的前后台分离开发方式&#xff0c;如下图所示&#xff1a; 那么基于前后台分离开发的模式下&#xff0c;我们后台开发者开发一个功能的具体流程如何呢&#xff1f;如下图所示&#xff1a; 需求分析&…

字节寻址(Byte Addressing) 与 Verilog中的寄存器索引

字节寻址&#xff08;Byte Addressing&#xff09; 与 Verilog中的寄存器索引 之间的关系。 您的疑问非常正确&#xff0c;直接看 3h1 很容易让人以为地址就是 0x01。 但答案是&#xff1a;是的&#xff0c;3h1 在这里对应的字节地址&#xff08;Byte Address&#xff09;确实是…

Ubuntu远程桌面

方法1: 检查并使用已安装的VNC或远程桌面组件 请在终端中执行以下命令检查系统中已安装的相关组件: bash# 检查系统中已安装的VNC和远程桌面相关软件 dpkg -l | grep -E "vnc|vino|remote|rdp"# 检查常见远程桌面服务 which vino-server tigervncserver x11vnc xr…

WEB攻防-文件包含LFIRFI伪协议编码算法无文件利用黑白盒

知识点&#xff1a; 1、文件包含-原理&分类&危害-LFI&RFI 2、文件包含-利用-黑白盒&无文件&伪协议 一、演示案例-文件包含-原理&分类&利用 1、原理 程序开发人员通常会把可重复使用的函数写到单个文件中&#xff0c;在使用某些函数时&#xff…

LabVIEW的GPIB仪器校准

基于LabVIEW开发平台与 GPIB 总线技术&#xff0c;采用是德科技、泰克等硬件设备&#xff0c;构建示波器与频谱分析仪自动校准系统。通过图形化编程实现校准流程自动化&#xff0c;涵盖设备连接、参数配置、数据采集、误差分析及报告生成&#xff0c;显著提升校准效率与精度&am…

Zotero中进行文献翻译【Windows11】

zotero官网&#xff1a;https://www.zotero.org/ 1 在Zotero软件中安装插件 进入Zotero百科全书&#xff0c;依次点击&#xff1a;插件→翻译插件→插件介绍→Zotero 中文社区插件商店 进去后搜索pdf2zh&#xff0c;然后下载后放入空白文件夹zotero-pdf2zh 打开Zotero软件后…

用U盘启动制作centos系统最常见报错,系统卡住无法继续问题(手把手)

一、按照操作系统centos7报错如下&#xff08;U盘&#xff09; 按照系统报错如下&#xff1a; ERROR: could not insert ‘floppy’; ERROR: could not insert ‘edd’ : No这种报错很常见&#xff0c;基本上就是u盘启动路径找不到导致&#xff0c;遇到次数比较多所以也比较好解…

C#中的BindingList有什么作用?

在C#中&#xff0c;BindingList<T> 是一个非常重要的集合类&#xff0c;位于 System.ComponentModel 命名空间&#xff0c;主要用于实现数据绑定&#xff08;Data Binding&#xff09;场景。1. 核心作用BindingList<T> 是 List<T> 的增强版&#xff0c;主要提…

Python爬取知乎评论:多线程与异步爬虫的性能优化

1. 知乎评论爬取的技术挑战 知乎的评论数据通常采用动态加载&#xff08;Ajax&#xff09;&#xff0c;这意味着直接使用**<font style"color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">requests</font>****<font style"color:rg…

软件系统测试的基本流程

软件系统测试流程是确保软件质量的规范化过程&#xff0c;涵盖从测试准备到最终上线评估的全周期&#xff0c;通常分为以下6个核心阶段&#xff0c;各阶段紧密衔接、形成闭环&#xff1a; 一、测试启动与规划阶段 核心目标&#xff1a;明确“测什么、谁来测、怎么测”&#xff…

使用Linux操作MySQL数据库分批导出数据为.SQL文件

当数据库某张数据量非常大的表进行其他操作&#xff0c;需要先进行导出时&#xff1b; 先用linux进入操作环境&#xff0c; 1.添加一个export_mysql_batches.sh脚本文件&#xff0c; #!/bin/bash# 数据库连接配置 DB_HOST"36.33.0.138:3306" DB_USER"devuser&qu…