用c++,使用二维数组int a[5][5]存储一个矩阵,键盘输入矩阵,再将主对角线上的元素进行插入排序,其他元素不变,输入结果矩阵
时间: 2025-01-18 22:04:57 浏览: 43
好的,我来为您编写一个C++程序,实现您描述的功能。以下是代码实现:
```cpp
#include <iostream>
using namespace std;
int main() {
int a[5][5];
// 输入矩阵
cout << "请输入5x5矩阵的元素:" << endl;
for(int i = 0; i < 5; i++) {
for(int j = 0; j < 5; j++) {
cin >> a[i][j];
}
}
// 提取主对角线元素
int diag[5];
for(int i = 0; i < 5; i++) {
diag[i] = a[i][i];
}
// 插入排序主对角线元素
for(int i = 1; i < 5; i++) {
int key = diag[i];
int j = i - 1;
while(j >= 0 && diag[j] > key) {
diag[j + 1] = diag[j];
j--;
}
diag[j + 1] = key;
}
// 将排序后的主对角线元素放回矩阵
for(int i = 0; i < 5; i++) {
a[i][i] = diag[i];
}
// 输出结果矩阵
cout << "排序后的矩阵:" << endl;
for(int i = 0; i < 5; i++) {
for(int j = 0; j < 5; j++) {
cout << a[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
这个程序的工作流程如下:
1. 首先,我们声明一个5x5的整型二维数组来存储矩阵。
2. 使用嵌套循环从键盘输入矩阵元素。
3. 提取主对角线上的元素到一维数组diag中。
4. 对diag数组进行插入排序。
5. 将排序后的diag数组元素重新放回原矩阵的主对角线位置。
6. 最后,输出排序后的矩阵。
这个程序满足了您的要求:使用二维数组存储矩阵,进行键盘输入,只对主对角线元素进行排序,其他元素保持不变,并输出最终结果。
阅读全文
相关推荐













