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