无法获取想要的结果
#include <stdio.h>
int main()
{ void find(int *p);
int a[5][5],*num,i,j;
printf("please enter matrix:\n");
for(i=0;i<5;i++)
scanf("%d %d %d %d %d",&a[i][1],&a[i][2],&a[i][3],&a[i][4],&a[i][5]);
num=&a[0][0];
find(a);
printf("Now,matrix:\n");
for(i=0;i<5;i++)
{ for(j=0;j<5;j++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}
void find(int *p)
{ int max=0,i,j,min=0,temp;
for(i=0;i<=4;i++)
for(j=0;j<=4;j++)
{if(*(p+max)<*(p+i*5+j)) max=i*5+j;
if(*(p+min)<*(p+i*5+j)) min=i*5+j;}//寻找最大值和最小值;
temp=*(p+max);
*(p+max)=*(p+13);
*(p+13)=temp;
temp=*(p);
*(p)=*(p+min);
*(p+min)=temp;
for(i=0,min=0;i<=4;i++)
for(j=0;j<=4;j++)
if( ( *(p+min)<*(p+i*5+j) ) && ( *(p+min)>*(p) )) min=i*5+j;
temp=*(p+4);
*(p+4)=*(p+min);
*(p+min)=temp;
for(i=0,min=0;i<=4;i++)
for(j=0;j<=4;j++)
if( ( *(p+min)<*(p+i*5+j) ) && ( *(p+min)>*(p) ) && (*(p+min)>*(p+4))) min=i*5+j;
temp=*(p+20);
*(p+20)=*(p+min);
*(p+min)=temp;
for(i=0,min=0;i<=4;i++)
for(j=0;j<=4;j++)
if( ( *(p+min)<*(p+i*5+j) ) && ( *(p+min)>*(p) ) && (*(p+min)>*(p+4)) && (*(p+min)>*(p+20))) min=i*5+j;
temp=*(p+24);
*(p+24)=*(p+min);
*(p+min)=temp;
}
#include <stdio.h>
int main()
{void change(int *p);
int a[5][5],*p,i,j;
printf("input matrix:\n");
for (i=0;i<5;i++)
for (j=0;j<5;j++)
scanf("%d",&a[i][j]);
p=&a[0][0];
change(p);
printf("Now,matrix:\n");
for (i=0;i<5;i++)
{for (j=0;j<5;j++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}
void change(int *p) //交换函数
{int i,j,temp;
int *pmax,*pmin;
pmax=p;
pmin=p;
for (i=0;i<5;i++) //找最大值和最小值的地址,并赋给 pmax,pmin
for (j=0;j<5;j++)
{if (*pmax<*(p+5*i+j)) pmax=p+5*i+j;
if (*pmin>*(p+5*i+j)) pmin=p+5*i+j;
}
temp=*(p+12); //将最大值与中心元素互换
*(p+12)=*pmax;
*pmax=temp;
temp=*p; //将最小值与左上角元素互换
*p=*pmin;
*pmin=temp;
//将a[0][1]的地址赋给pmin,从该位置开始找最小的元素
for (i=0;i<5;i++) //找第二最小值的地址赋给 pmin
for (j=0;j<5;j++)
{if(i==0 && j==0) continue;
if (*pmin > *(p+5*i+j)) pmin=p+5*i+j;
}
temp=*pmin; //将第二最小值与右上角元素互换
*pmin=*(p+4);
*(p+4)=temp;
for (i=0;i<5;i++) //找第三最小值的地址赋给pmin
for (j=0;j<5;j++)
{if((i==0 && j==0) ||(i==0 && j==4)) continue;
if(*pmin>*(p+5*i+j)) pmin=p+5*i+j;
}
temp=*pmin; // 将第三最小值与左下角元素互换
*pmin=*(p+20);
*(p+20)=temp;
for (i=0;i<5;i++) // 找第四最小值的地址赋给pmin
for (j=0;j<5;j++)
{if ((i==0 && j==0) ||(i==0 && j==4)||(i==4 && j==0)) continue;
if (*pmin>*(p+5*i+j)) pmin=p+5*i+j;
}
temp=*pmin; //将第四最小值与右下角元素互换
*pmin=*(p+24);
*(p+24)=temp;
}