C++程序 矩阵沿对角线的镜像

C++程序 矩阵沿对角线的镜像

在矩阵运算中,有一种常见的操作是矩阵沿对角线进行镜像。具体来说,就是将矩阵的行和列对称交换。例如,一个3×3的矩阵:

1 2 3
4 5 6
7 8 9

如果沿对角线进行镜像,得到的矩阵为:

1 4 7
2 5 8
3 6 9

下面我们将介绍如何使用C++编写一个矩阵沿对角线进行镜像的程序。

输入矩阵

我们首先需要输入一个矩阵,并将其存储在一个二维数组中。假设我们要输入一个n行m列的矩阵,可以使用如下代码:

int a[n][m];
for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
        cin >> a[i][j];
    }
}

这段代码使用了两个for循环依次输入每个元素。

沿对角线镜像

接下来我们需要将矩阵沿对角线进行镜像。具体来说,就是将第i行第j列的元素与第j行第i列的元素进行交换。我们可以使用如下代码实现:

for (int i = 0; i < n; i++) {
    for (int j = i + 1; j < m; j++) {
        swap(a[i][j], a[j][i]);
    }
}

这段代码先循环遍历所有“上三角”元素(即i < j的元素),然后将它们和对应的“下三角”元素(即i > j的元素)进行交换。

输出矩阵

最后,我们需要将变换后的矩阵输出。可以使用如下代码:

for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
        cout << a[i][j] << " ";
    }
    cout << endl;
}

这段代码依次输出每一行的元素。

完整代码

下面是完整的程序代码:

#include <iostream>
using namespace std;

int main() {
    int n, m;
    cin >> n >> m;
    int a[n][m];
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cin >> a[i][j];
        }
    }
    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < m; j++) {
            swap(a[i][j], a[j][i]);
        }
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cout << a[i][j] << " ";
        }
        cout << endl;
    }
    return 0;
}

结论

通过以上的代码实现,我们可以方便地将一个矩阵沿对角线镜像。此外,这也是一个矩阵运算中的基本操作,对于学习和理解矩阵运算有一定的帮助。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

C++ 示例