C言語で配列の行と列の要素を入れ替えるにはどうすればよいか

可以通过循环遍历数组的每个元素,并使用临时变量进行元素互换的操作来实现数组行列元素的互换。具体实现如下:

#include <stdio.h>

#define ROWS 3
#define COLS 4

void transpose(int matrix[ROWS][COLS], int transposed[COLS][ROWS]) {
    int i, j;
    
    for(i = 0; i < ROWS; i++) {
        for(j = 0; j < COLS; j++) {
            transposed[j][i] = matrix[i][j];
        }
    }
}

int main() {
    int matrix[ROWS][COLS] = { {1, 2, 3, 4},
                               {5, 6, 7, 8},
                               {9, 10, 11, 12} };
    int transposed[COLS][ROWS];
    int i, j;

    transpose(matrix, transposed);

    printf("Original Matrix:\n");
    for(i = 0; i < ROWS; i++) {
        for(j = 0; j < COLS; j++) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }

    printf("\nTransposed Matrix:\n");
    for(i = 0; i < COLS; i++) {
        for(j = 0; j < ROWS; j++) {
            printf("%d ", transposed[i][j]);
        }
        printf("\n");
    }

    return 0;
}

実行結果:

Original Matrix:
1 2 3 4 
5 6 7 8 
9 10 11 12 

Transposed Matrix:
1 5 9 
2 6 10 
3 7 11 
4 8 12 

transpose 関数は行列の入れ替えを行い、2 次元配列と対象となる 2 次元配列を引数として受け取ります。2 つのネストされたループは元の配列のすべての要素を反復処理し、それらを対象となる配列の対応する位置に代入することによって、行列の要素の交換を実現します。main 関数では、3 行 4 列の 2 次元配列 matrix を定義し、transpose 関数を呼び出して行列の要素を入れ替えて transposed 配列に格納します。最後に、元の配列と入れ替えられた後の配列を個別に印刷して、入れ替えの結果が正しいかどうかを観察します。

bannerAds