请大神运行一下,然后解释下哪里出错了?小弟我要详细回答,多谢,详细告诉小弟我原因

请大神运行一下,然后解释下哪里出错了?我要详细回答,谢谢,详细告诉我原因
#include <stdio.h>
void move(int *p)
{int *q,t,i,j;
int *min,*max;
min=max=p;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(*min>*(p+5*i+j))min=(p+5*i+j);
else if(*max<*(p+5*i+j))max=(p+5*i+j);
t=*max;
*max=*(p+12);
*(p+12)=t;
t=*min;
*min=*p;
*p=t;
min=p+1;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{if(i==0&&j==0)continue;
if(*min>*(p+5*i+j))min=(p+5*i+j);}
t=*min;
*min=*(p+4);
*(p+4)=t; 
min=p+1;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if((p+5*i+j)!=p&&(p+5*i+j)!=(p+4)&&*min>*(p+5*i+j))min=(p+5*i+j);
t=*min;
*min=*(p+20);
*(p+20)=t;
min=p+1;
for(i=0;i<5;i++)
for(j=0;i<5;j++)
{if((i==0&&j==0)||(i==0&&j==4)||(i==4&&j==0))continue;
if(*min>*(p+5*i+j))min=(p+5*i+j);
}
t=*min;
*min=*(p+24);
*(p+24)=t;
}


void main()
{int a[5][5],*p,i;
for(i=0;i<5;i++)
scanf("%d %d %d %d %d",&a[i][0],&a[i][1],&a[i][2],&a[i][3],&a[i][4]);
p=&a[0][0];
putchar('\n');
move(p);
for(i=0;i<5;i++)
printf("%d %d %d %d %d\n",a[i][0],a[i][1],a[i][2],a[i][3],a[i][4]);
}

------解决思路----------------------
要学着自己单步一个.
还有,上代码时格式化下,...要不然难看死啦,还有.说明一下代码的意图...


void move(int *p) 
{
   ///////.............
    min=p+1;
    for(i=0;i<5;i++)
        for(j=0;i<5;j++)    /// 这里死循环了:这个 i<5 ,.... 应该是  j<5 吧 .
        {
            if((i==0&&j==0)
------解决思路----------------------
(i==0&&j==4)
------解决思路----------------------
(i==4&&j==0))continue;
            if(*min>*(p+5*i+j))min=(p+5*i+j);
        }
       t=*min;
   //// .......