【入門級-C++程序設計:3、程序基本語句-多層循環語句】

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…