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

C語言二維陣列(N×N)轉置程式完整教學

     編輯:C 語言問答

C語言二維陣列轉置實作指南

在C語言中,將一個 N×N 的方陣進行轉置(行列互換)是常見的陣列操作。本文提供一個完整、可直接編譯執行的程式範例,並詳細解釋核心邏輯。

完整程式碼

#define N 5
#include <stdio.h>

int main() {
    int a[N][N] = {
        {1, 2, 3, 4, 5},
        {6, 7, 8, 9, 10},
        {11, 12, 13, 14, 15},
        {16, 17, 18, 19, 20},
        {21, 22, 23, 24, 25}
    };
    int i, j, temp;

    printf("轉置前:\n");
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++) printf("%4d", a[i][j]);
        printf("\n");
    }

    // 核心轉置邏輯:只遍歷主對角線下方(或上方)的元素進行交換
    for (i = 1; i < N; ++i) {
        for (j = 0; j < i; ++j) {
            temp = a[i][j];
            a[i][j] = a[j][i];
            a[j][i] = temp;
        }
    }

    printf("\n轉置後:\n");
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++) printf("%4d", a[i][j]);
        printf("\n");
    }
    return 0;
}

關鍵點解析

  • 雙重迴圈範圍:外層 i 從 1 開始,內層 j 從 0 到 i-1。這確保只處理主對角線下方的元素,避免重複交換導致資料還原。
  • 暫存變數:使用 temp 進行三步驟交換,這是標準的無額外空間交換法。
  • 主對角線不動:當 i == j 時位於主對角線,轉置後位置不變,故迴圈設計天然跳過。

執行結果範例

程式會輸出轉置前後的矩陣對比,清晰驗證行列是否正確互換。

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