试试我给你写的程序!
大致看了一下你的!
#include
void main()
{
int process(int num[][5]);
int num[][5]={15,4,3,2,5,16,7,8,9,10,11,12,13,14,1,6,17,18,19,20,21,22,23,24,25};
int i,j;
process(num);
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("%4d",num[i][j]);
}
printf("\n");
}
}
int process(int num[5][5])
{
int i,j,temp;
int *max,*min,*min1,*min2,*min3;
max=&num[2][2];
min=&num[0][0];
min1=&num[0][4];
min2=&num[4][0];
min3=&num[4][4];
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if((*(*(num+i)+j))>*max)
{
temp=*max;
*max=*(*(num+i)+j);
*(*(num+i)+j)=temp;//最大值
}
else
if((*(*(num+i)+j))<*min)
{
temp=*min;
*min=*(*(num+i)+j);
*(*(num+i)+j)=temp;//最小
}
}
}
for(i=0;i<5;i++) //第二小
{
for(j=0;j<5;j++)
{
if(*(*(num+i)+j)==*min)continue;
else
if(*(*(num+i)+j)<*min1)
{
temp=*min1;
*min1=*(*(num+i)+j);
*(*(num+i)+j)=temp;
}
}
}
for(i=0;i<5;i++) //第三小
{
for(j=0;j<5;j++)
{
if((*(*(num+i)+j)==*min)||(*(*(num+i)+j)==*min1))continue;
else
if(*(*(num+i)+j)<*min2)
{
temp=*min2;
*min2=*(*(num+i)+j);
*(*(num+i)+j)=temp;
}
}
}
for(i=0;i<5;i++) //第四小
{
for(j=0;j<5;j++)
{
if((*(*(num+i)+j)==*min)||(*(*(num+i)+j)==*min1)||(*(*(num+i)+j)==*min2))continue;
else
if(*(*(num+i)+j)<*min3)
{
temp=*min3;
*min3=*(*(num+i)+j);
*(*(num+i)+j)=temp;
}
}
}
printf("min1=%2d min2=%2d min3=%2d\n",*min1,*min2,*min3);
}