矩阵互换正对角线和反对角线c++
时间: 2024-11-05 12:10:58 浏览: 5
矩阵互换正对角线和反对角线,通常是指将矩阵A的元素按行和列分为两部分,即正对角线(从左上到右下)和反对角线(从左下到右上),然后交换这两部分的元素。这里是一个简单的C++示例,假设我们有一个二维数组matrix表示矩阵:
```cpp
#include <iostream>
using namespace std;
void swapDiagonals(int matrix[][n], int n) {
// 先复制正对角线到临时变量
int temp[n][n];
for (int i = 0; i < n; ++i) {
temp[i][i] = matrix[i][i]; // 正对角线
}
// 清空原矩阵的对角线元素
for (int i = 0; i < n; ++i) {
matrix[i][i] = 0;
}
// 将临时对角线复制回原矩阵的反对角线位置
for (int i = 0; i < n; ++i) {
matrix[i][n - i - 1] = temp[i][i]; // 反对角线
}
}
// 示例矩阵
int main() {
const int n = 4;
int matrix[n][n] = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}};
cout << "Original Matrix:\n";
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
swapDiagonals(matrix, n);
cout << "Matrix after swapping diagonals:\n";
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
在这个例子中,`swapDiagonals`函数接收一个二维数组和它的大小,然后实际完成元素的交换操作。运行这个程序后,你会看到原始矩阵的对角线和反对角线元素已经被互换。
阅读全文