编写一个函数可以将矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大存放),用main函数调用这个函数。
时间: 2023-07-15 09:14:06 浏览: 86
以下是实现该功能的C++代码:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN = 10;
void arrange(int a[][MAXN], int n){
int max_val = a[0][0], min_val = a[0][0];
int max_r = n/2, max_c = n/2; // 最大值在中心位置
int min_r[] = {0, 0, n-1, n-1}; // 最小值在四个角
int min_c[] = {0, n-1, 0, n-1};
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
if(a[i][j] > max_val){
max_val = a[i][j];
max_r = i;
max_c = j;
}
if(a[i][j] < min_val){
min_val = a[i][j];
}
}
}
a[max_r][max_c] = a[n/2][n/2];
a[n/2][n/2] = max_val;
sort(min_val, min_val+4);
for(int i=0; i<4; i++){
a[min_r[i]][min_c[i]] = min_val[i];
}
}
int main(){
int a[MAXN][MAXN];
int n;
cout << "请输入矩阵大小n(n为奇数且不大于10):";
cin >> n;
cout << "请输入" << n*n << "个矩阵元素:";
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
cin >> a[i][j];
}
}
arrange(a, n);
cout << "处理后的矩阵为:" << endl;
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
cout << a[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
在该代码中,我们先找到矩阵中的最大值,并记录其位置,然后将其与中心位置的元素交换。接下来,我们使用STL库中的sort函数对最小值进行排序,然后将其依次放入四个角中。最后,我们输出处理后的矩阵。
阅读全文