使用二维数组概念将矩阵进行转置(即原矩阵的行变为新矩阵的列):

使用二维数组概念将矩阵进行转置(即原矩阵的行变为新矩阵的列):

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
下面是 C 语言和 C++ 两种语言实现矩阵转置的示例代码:

C 语言:

#include <stdio.h>

int main() {
    int matrix[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; // 原矩阵
    int transposed[3][3]; // 转置后的矩阵

    // 计算转置后的矩阵
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            transposed[j][i] = matrix[i][j]; // 将原矩阵的行变为新矩阵的列
        }
    }

    // 打印原矩阵
    printf("原矩阵:\n");
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }

    // 打印转置后的矩阵
    printf("转置后的矩阵:\n");
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            printf("%d ", transposed[i][j]);
        }
        printf("\n");
    }

    return 0;
}

C++:

#include <iostream>

using namespace std;

int main() {
    int matrix[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; // 原矩阵
    int transposed[3][3]; // 转置后的矩阵

    // 计算转置后的矩阵
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            transposed[j][i] = matrix[i][j]; // 将原矩阵的行变为新矩阵的列
        }
    }

    // 打印原矩阵
    cout << "原矩阵:" << endl;
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            cout << matrix[i][j] << " ";
        }
        cout << endl;
    }

    // 打印转置后的矩阵
    cout << "转置后的矩阵:" << endl;
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            cout << transposed[i][j] << " ";
        }
        cout << endl;
    }

    return 0;
}

以上两份代码中,都定义了一个 3x3 的矩阵和一个对应的 3x3 的转置后的矩阵。然后,使用两个嵌套的 for 循环遍历原矩阵,将原矩阵的行变为新矩阵的列,计算出转置后的矩阵。最后,分别打印原矩阵和转置后的矩阵。


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

代码如下,供参考:

#include <stdio.h>
#define N 10
int main()
{
    int a[N][N];
    int i,j,t,n;
    scanf("%d",&n);
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
            scanf("%d",&a[i][j]);
 
    for(i=0;i<n;i++)//转置  行列互换
    {
        for(j=i;j<n;j++)
        {
            t =  a[i][j];
            a[i][j] = a[j][i];
            a[j][i] = t;
        }
    }
 
    for(i=0;i<n;i++){ //输出转置后的数组
        for(j=0;j<n;j++)
            printf("%d ",a[i][j]);
        printf("\n");
    }
    return 0;
}