指针二维数组,为什么子函数的第2个for没反应,求指点。。
#include <stdio.h>#include <math.h>
#include <string.h>
void main()
{
void qx(int (*q)[5][5]);
int a[5][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}},*q,i;
q=a;
qx(q);
}
void qx(int (*q)[5][5])
{
int i,j,t=0,max=0,min1=25,min2=25,min3=25,min4=25,k1,k2,k3;
for(i=0;i<25;i++)
{
if(max<***q+i)
max=***q+i;
if(min1>***q+i)
{
min1=***q+i;
k1=i;
}
if(i==k1)
i=i+1;
if(min2>***q+i)
{
min2=***q+i;
k2=i;
}
if(i==k1||i==k2)
i=i+1;
if(min3>***q+i)
{
min3=***q+i;
k3=i;
}
if(i==k1||i==k2||i==k3)
i=i+1;
if(min4>***q+i)
min4=***q+i;
}
for(i=0;i<25;i++)
{
if(***q+i==max)
{
t=***q+i;
*(**q+i)=***q+13;
*(**q+13)=t;
}
if(***q+i==min1)
{
t=***q+i;
*(**q+i)=***q;
***q=t;
}
if(min2==***q+i)
{
t=***q+i;
*(**q+i)=***q+4;
*(**q+4)=t;
}
if(min3==***q+i)
{
t=***q+i;
*(**q+i)=***q+20;
*(**q+20)=t;
}
if(min4==***q+i)
{
t=***q+i;
*(**q+i)=***q+25-1;
*(**q+24)=t;
}
}
for(i=0;i<25;i++)
{
if(i%5==0)
printf("\n");
printf("%5d",***q+i);
}
}
功能是把最大的数放中间,最小的4个数从小到大放在4个角上,为什么子函数的第2个for好象没执行样?