```
#include
#include
void mymin(int(*p)[5],int *min)
{
int a[25];
int temp = 0;
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
a[temp] = p[i][j];
temp++;
}
}
for (int i = 0; i < 25; i++)
{for (int j = 0; j < 25 - i - 1; j++)
{
if (a[j] > a[j + 1])
{
int tmp = a[j];
a[j] = a[j + 1];
a[j + 1] = tmp;
}
}
}
for (int i = 0; i < 4; i++)
{
min[i] = a[i];
}
}
void cal(int (*p)[5])
{int min[4] = {0};
int max = p[0][0];
mymin(p, min);
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
if(max < p[i][j])
{
max = p[i][j];
}
}
}
p[2][2]=max;
p[0][0]=min[0];
p[0][4]=min[1];
p[4][0]=min[2];
p[4][4]=min[3];
}
int main()
{
int a[5][5];
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
scanf("%d", &a[i][j]);
}
}
cal(a);
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
printf("%d ", a[i][j]);
}
printf("\n");
}
system("pause");
return 0;
}
```这个问题如上图所示。
参考代码实现如下,望采纳
#include <stdio.h>
#define N 5
void arrange(int a[][N]) {
// 将最大元素放在中心
int max = a[0][0];
int max_i = 0, max_j = 0;
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (a[i][j] > max) {
max = a[i][j];
max_i = i;
max_j = j;
}
}
}
a[max_i][max_j] = a[N/2][N/2];
a[N/2][N/2] = max;
// 将4个角分别放4个最小的元素
int min[4] = {
a[0][0], a[0][N-1], a[N-1][0], a[N-1][N-1]
}
;
int min_i[4] = {
0, 0, N-1, N-1
}
;
int min_j[4] = {
0, N-1, 0, N-1
}
;
for (int i = 0; i < 4; i++) {
for (int j = i+1; j < 4; j++) {
if (min[i] > min[j]) {
int temp = min[i];
min[i] = min[j];
min[j] = temp;
temp = min_i[i];
min_i[i] = min_i[j];
min_j[i] = min_j[j];
}
}
}
for (int i = 0; i < 4; i++) {
a[min_i[i]][min_j[i]] = min[i];
}
}
int main() {
int a[N][N];
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
scanf("%d", &a[i][j]);
}
}
arrange(a);
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}