#include<iostream> using namespace std; int main() { int m, n; int c[100][100]; cout << "请输入矩阵的行数" << endl; cin >> m; cout << "请输入矩阵的列数" << endl; cin >> n; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { cout << "请输入矩阵的第" << (i + 1) << "行,第" << (j + 1) << "列的数:"; cin >> c[i][j]; } } cout << "输出的矩阵为:" << endl; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { cout << c[i][j] << " "; } cout << endl; } //对角线交换 //上下交换 int tmp; for (int i = 0; i < m / 2; i++) { for (int j = 0; j < n; j++) { tmp = c[i][j]; c[i][j] = c[m - i - 1][j]; c[m - i - 1][j] = tmp; } } cout << "旋转后的矩阵为:" << endl; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { cout << c[i][j] << " "; } cout << endl; } return 0; }在此基础上添加一个矩阵的对角线交换功能
时间: 2024-04-11 21:29:08 浏览: 109
您可以在现有代码的基础上添加一个矩阵的对角线交换功能。以下是修改后的代码:
```cpp
#include<iostream>
using namespace std;
int main()
{
int m, n;
int c[100][100];
cout << "请输入矩阵的行数" << endl;
cin >> m;
cout << "请输入矩阵的列数" << endl;
cin >> n;
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
cout << "请输入矩阵的第" << (i + 1) << "行,第" << (j + 1) << "列的数:";
cin >> c[i][j];
}
}
cout << "输出的矩阵为:" << endl;
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
cout << c[i][j] << " ";
}
cout << endl;
}
// 对角线交换
if (m == n) // 只有方阵才能进行对角线交换
{
int tmp;
for (int i = 0; i < m; i++)
{
tmp = c[i][i];
c[i][i] = c[i][n - i - 1];
c[i][n - i - 1] = tmp;
}
}
cout << "对角线交换后的矩阵为:" << endl;
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
cout << c[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
在这个修改后的代码中,我们首先判断输入的矩阵是否为方阵(行数和列数相等),只有方阵才能进行对角线交换。然后,我们使用一个临时变量 `tmp` 来进行对角线元素的交换。通过遍历矩阵的主对角线上的元素,将其与对应位置的副对角线上的元素进行交换。最后,输出交换后的矩阵。
请注意,这段代码只能用于方阵的对角线交换,如果输入的矩阵不是方阵,则不会进行对角线交换操作。
阅读全文