[求助]关于指针的题目
将一个5 *5的距阵中的最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下顺序依次从小到大存放,写一个函数实现之,用main函数调用。写了好久,结果不对,望大家给点意见#include <stdio.h>
void main()
{
void change(int *p);
int a[5][5],i,j,*p1;
printf("please input 25 number:\n");
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",a[i][j]);
p1=&a[0][0];
change(p1);
for(i=0;i<5;i++)
{for(j=0;j<5;j++)
printf("%d\t",a[i][j]);
printf("\n");}
}
void change(int *p)
{
int *max,*min,i,*b;
b=p;
max=b;min=b;
for(i=0;i<25;i++,b++)
{if(*max<*b) max=b;
if(*min>*b) min=b;
}
i=*(p+12);*(p+12)=*max;*max=i;
i=*p;*p=*min;*min=i;
b=p;
min=p+1;
for(i=0;i<25;i++,b++)
if(*b>*p&&*b<*min) min=b;
i=*(p+4);*(p+4)=*min;*min=i;
b=p;
min=p+2;
for(i=0;i<25;i++,b++)
if(*b>*(p+4)&&*b<*min) min=b;
i=*(p+20);*(p+20)=*min;*min=i;
b=p;
min=p+3;
for(i=0;i<25;i++,b++)
if(*b>*(p+20)&&*b<*min) min=b;
i=*(p+24);*(p+24)=*min;*min=i;
}