#include <stdio.h>
int main()
{
void max_center_min_side(int *a);
int num[5][5];
int i,j;
printf("请输入5*5数组:\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
scanf("%d",&num[i][j]);
}
}
max_center_min_side(*num);
printf("调整后的数组:\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("%d ",num[i][j]);
}
printf("\n");
}
return 0;
}
void max_center_min_side(int *a)
{
int i,j,w,u,r,o,y,e,t; //找最大的数字
int *max,*min,*min1,*min2,*min3;
max=a+12;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(*max<*(a+5*i+j))
{
t=*max; //将找到的值交换
*max=*(a+5*i+j);
*(a+5*i+j)=t;
}
}
}
printf("%d\n",*max);
min=a; //找最小的数字
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(*min>*(a+5*i+j))
{
w=i;
u=j;
t=*(a+5*i+j);
*(a+5*i+j)=*min;
*min=t;
}
}
}
printf("%d\n",*min);
min1=a+4; //找第二小数字
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(*min1>*(a+5*i+j))
{
if(*(a+5*i+j)>*a)
{
r=i;
o=j;
t=*min1;
*min1=*(a+5*i+j);
*(a+5*i+j)=t;
}
if(*(a+5*i+j)==*a&&5*i+j>5*w+u)
{
r=i;
o=j;
t=*min1;
*min1=*(a+5*i+j);
*(a+5*i+j)=t;
}
}
}
}
printf("%d\n",*min1);
min2=a+20; //找第三小数字
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(*min2>*(a+5*i+j))
{
if(*(a+5*i+j)>*(a+4))
{
t=*min2;
*min2=*(a+5*i+j);
*(a+5*i+j)=t;
y=i;
e=j;
}
if(*(a+5*i+j)==*(a+4)&&5*i+j>5*r+o)
{
t=*min2;
*min2=*(a+5*i+j);
*(a+5*i+j)=t;
y=i;
e=j;
}
}
}
}
printf("%d\n",*min2);
min3=a+24; //找第四小的数字
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(*min3>*(a+5*i+j))
{
if(*(a+5*i+j)>*(a+20))
{
t=*min3;
*min3=*(a+5*i+j);
*(a+5*i+j)=t;
}
if(*(a+5*i+j)==*(a+20)&&((5*i+j)>(5*y+e)))
{
t=*min3;
*min3=*(a+5*i+j);
*(a+5*i+j)=t;
}
}
}
}
printf("%d\n",*min3);
}