将一个5x5的矩阵中的最大元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大存放),写一函数实现之。用main函数调用。
#include <stdio.h>
#include <stdlib.h>
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;
}
答案
将一个5x5的矩阵中的最大元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大存放),写一函数实现之。用main函数调用。