📜  用C++程序查找矩阵的转置(1)

📅  最后修改于: 2023-12-03 15:11:14.660000             🧑  作者: Mango

C++程序查找矩阵的转置

对于一个 $m \times n$ 的矩阵 $A$,其转置矩阵 $A^T$ 是一个 $n \times m$ 的矩阵,且满足:

$$ (A^T){i,j} = A{j,i} \quad (1 \leq i \leq n, 1 \leq j \leq m) $$

下面提供一份 C++ 程序,可以实现查找矩阵的转置。

#include <iostream>
#include <cstring>

using namespace std;

const int MAXN = 100;

int mat[MAXN][MAXN];

int main() {
    int m, n;
    memset(mat,0,sizeof mat); // 将矩阵置零

    cin >> m >> n; // 输入矩阵的行数和列数

    for (int i = 1; i <= m; ++i) {
        for (int j = 1; j <= n; ++j) {
            cin >> mat[i][j]; // 逐一输入矩阵的元素
        }
    }

    for (int j = 1; j <= n; ++j) {
        for (int i = 1; i <= m; ++i) {
            cout << mat[i][j]; // 输出转置矩阵的元素
            if (i != m) cout << ' ';
        }
        cout << '\n';
    }
    return 0;
}

该程序中,首先使用 memset 函数将矩阵 mat 中的元素全部置为零。然后,输入矩阵的行数和列数。接着,逐一输入矩阵的元素。最后,输出转置矩阵的元素。

转置矩阵的输出过程与原矩阵类似,只不过先输出原矩阵的第一列,再输出原矩阵的第二列……以此类推,用一个外部循环遍历列,内部循环遍历行,即可输出转置矩阵的所有元素。