首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言問答

C語言三層巢狀迴圈與條件判斷詳解:輸出所有不重複的三位數組合

     編輯:C 語言問答

程式碼分析:三層巢狀迴圈的運作邏輯

這段 C 語言程式碼展示了經典的三層巢狀迴圈結構,目的是找出 1 到 4 之間所有互不相同的三個數字組合。讓我們逐層拆解其執行順序與判斷邏輯。

程式碼結構

#include <stdio.h>

void main() {
    int i, j, k;
    printf("\n");
    for(i = 1; i < 5; i++) {
        for(j = 1; j < 5; j++) {
            for(k = 1; k < 5; k++) {
                if(i != k && i != j && j != k)
                    printf("%d,%d,%d\n", i, j, k);
            }
        }
    }
}

迴圈執行順序:由外而內,層層遞進

程式執行遵循「從上到下、由外而內」的原則:

  • 最外層 i 迴圈:i 從 1 遞增到 4,共執行 4 次
  • 中間層 j 迴圈:每當 i 固定時,j 從 1 跑到 4,共執行 4 次
  • 最內層 k 迴圈:每當 i、j 固定時,k 從 1 跑到 4,共執行 4 次

總迭代次數 = 4 × 4 × 4 = 64 次。但由於 if 條件過濾,只有滿足「三數互不相同」的組合會被輸出。

條件判斷邏輯:短路求值與邏輯與運算

if(i != k && i != j && j != k) 包含三個子條件,採用邏輯與(&&)連接,具備短路求值特性:

  1. 先判斷 i != k,若為假(相等),直接跳過後續判斷,不執行 printf
  2. 若第一條件為真,繼續判斷 i != j,若為假則停止
  3. 前兩條件均為真時,才判斷 j != k
  4. 只有三個條件全部為真,才會執行 printf 輸出

輸出結果示例

程式將輸出所有由 1、2、3、4 組成的不重複三位數排列,共 24 組(4P3 = 4×3×2 = 24):

1,2,3
1,2,4
1,3,2
1,3,4
1,4,2
1,4,3
2,1,3
...
4,3,2

關鍵概念總結

概念說明
巢狀迴圈執行順序外層執行一次,內層跑完一輪;由外而內,逐層遞進
邏輯與(&&)短路特性前條件為假即停止判斷,提升效率
排列組合應用從 n 個元素中取 r 個不重複排列:nPr = n!/(n-r)!

理解巢狀迴圈與條件判斷是掌握 C 語言流程控制的基礎,這類「生成所有符合條件的組合」模式在排列組合、搜尋演算法中極為常見。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved