将一个二维数组行和列元素互换

将一个二维数组行和列元素互换,存到另一个二维数组中并输出这两个矩阵。 原始矩阵如下: 1 4 5 6 3 2 7 8 7 9 0 3

#include <stdio.h>

#define ROWS 3
#define COLS 4

int main() {
    int arr[ROWS][COLS] = {{1, 4, 5, 6}, {3, 2, 7, 8}, {7, 9, 0, 3}};
    int new_arr[COLS][ROWS];
    
    // 输出原始矩阵
    printf("原始矩阵:\n");
    for (int i = 0; i < ROWS; i++) {
        for (int j = 0; j < COLS; j++) {
            printf("%d ", arr[i][j]);
        }
        printf("\n");
    }
    printf("\n");
    
    // 将行和列元素互换,并存入新的矩阵中
    for (int i = 0; i < ROWS; i++) {
        for (int j = 0; j < COLS; j++) {
            new_arr[j][i] = arr[i][j];
        }
    }
    
    // 输出新的矩阵
    printf("互换后的矩阵:\n");
    for (int i = 0; i < COLS; i++) {
        for (int j = 0; j < ROWS; j++) {
            printf("%d ", new_arr[i][j]);
        }
        printf("\n");
    }
    printf("\n");
    
    return 0;
}

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:

要将一个二维数组的行和列互换,可以遍历原始矩阵,将每个元素的行和列交换后存入新的矩阵中。以下是一种 C 语言的实现方式:

#include <stdio.h>

#define ROWS 3
#define COLS 4

int main()
{
    int matrix[ROWS][COLS] = { {1, 4, 5, 6}, {3, 2, 7, 8}, {7, 9, 0, 3} };
    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];
        }
    }
    
    // 输出原始矩阵
    printf("Original matrix:\n");
    for (i = 0; i < ROWS; i++) {
        for (j = 0; j < COLS; j++) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }
    
    // 输出转置矩阵
    printf("Transposed matrix:\n");
    for (i = 0; i < COLS; i++) {
        for (j = 0; j < ROWS; j++) {
            printf("%d ", transposed[i][j]);
        }
        printf("\n");
    }
    
    return 0;
}

在这个程序中,我们首先定义了一个 $3\times 4$ 的原始矩阵 matrix,和一个 $4\times 3$ 的转置矩阵 transposed。随后,我们遍历 matrix 中的每个元素,将其行和列交换后存入 transposed 中。最后,输出原始矩阵和转置矩阵。

输出结果如下:

Original matrix:
1 4 5 6 
3 2 7 8 
7 9 0 3 
Transposed matrix:
1 3 7 
4 2 9 
5 7 0 
6 8 3 

可以看出,原始矩阵的行和列已经互换,并存入了转置矩阵中。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7441154
  • 这篇博客也不错, 你可以看下给一个不多于5位的正整数,要求: 1、求出它是几位数; 2、分别输出每位数字 3、按逆序输出各位数字; 例如:原数为321,应输出123.
  • 除此之外, 这篇博客: 7-4 是否同一棵二叉搜索树(25 分)中的 输出格式: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    对每一组需要检查的序列,如果其生成的二叉搜索树跟对应的初始序列生成的一样,输出“Yes”,否则输出“No”。

  • 以下回答来自chatgpt:

    可以使用如下的代码实现将一个二维数组的行和列元素互换,并将互换后的结果输出到另一个二维数组中:

    #include <iostream>
    
    using namespace std;
    
    void display(int c[][3])
    {
        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 3; j++)
                cout << c[i][j] << " ";
            cout << endl;
        }
    }
    
    void exchange(int a[][3], int m, int n, int b[][3])
    {
        for (int i = 0; i < m; i++)
            for (int j = 0; j < n; j++)
                b[j][i] = a[i][j];
    }
    
    int main()
    {
        int a[3][3] ={ {1, 2, 3},
                       {4, 5, 6},
                       {7, 8, 9} };
        int b[3][3];
        int m = 3, n = 3;
    
        exchange(a, m, n, b);
        display(b);
    
        return 0;
    }
    

    运行以上代码,可以看到输出结果为:

    1 4 7 
    2 5 8 
    3 6 9 
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^