函数能正常运行但结果不对,请各位师兄帮忙诊断
题目:将一个5*5的矩阵中最大的元素放在中心,4个角分别放4个最小元素(顺序为从左到右,从上到下的顺序依次从小到大存放)。#include<stdio.h>
void main()
{
void change(int *) ;
int a[5][5];
int *p,i,j;
printf("input matrix:\n");
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
for(i=0;i<5;i++)
{printf("\n");
for(j=0;j<5;j++)
printf("%4d",a[i][j]);}
printf("\n");
p=a;
change(a);
printf("Now,matix:\n");
for(i=0;i<5;i++)
{printf("\n");
for(j=0;j<5;j++)
printf("%4d",a[i][j]);}
printf("\n");
}
void dz(int *p)
{ int i,j,temp;
int *min,*max;
max=p;
min=p;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(*max<*(p+i*5+j)) max=p+i*5+j;
else if(*min>*(p+i*5+j)) min=p+i*5+j;
temp=*max;
*max=*(p+12);
*(p+12)=temp;
temp=*p;
*p=*min;
*min=temp;
min=p+1;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if((*min>*(p+i*5+j))&&((p+i*5+j)!=p))
min=p+i*5+j;
temp=*(p+4);
*(p+4)=*min;
*min=temp;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if((*min>*(p+i*5+j))&&((p+i*5+j)!=p)&&((p+i*5+j)!=(p+4)))
min=p+i*5+j;
temp=*(p+20);
*(p+20)=*min;
*min=temp;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if((*min>*(p+i*5+j))&&((p+i*5+j)!=p)&&((p+i*5+j)!=(p+4))&&((p+i*5+j)!=(p+20)))
min=p+i*5+j;
temp=*(p+24);
*(p+24)=*min;
*min=temp;
}