倚天照海花无数,流水高山心自知。
干脆我把程序贴出来了.
#include<stdio.h>
#define N 5
void zhuanhuan(int *a)
{
int *min,*max;
int i,j,t;
max=a;
min=a;
for(i=0;i<N;i++)
{
for(j=i;j<N;j++)
{
if(*min>*(a+N*i+j))
{
min=(a+N*i+j);
}
if(*max<*(a+N*i+j))
{
max=(a+N*i+j);
}
}
}
t=*(a+N/2*N+N/2);
*(a+N/2*N+N/2)=*max;
*max=t;
t=*a;
*a=*min;
*min=t;
min=a+1;//第二个
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
if((a+N*i+j)!=a&&*min>*(a+N*i+j))
{
min=(a+N*i+j);
}
}
}
t=*(a+N-1);
*(a+N-1)=*min;
*min=t;
min=a+1;//第三个
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
if((a+N*i+j)!=a&&(a+N*i+j)!=a+N-1&&*min>*(a+N*i+j))
{
min=(a+N*i+j);
}
}
}
t=*(a+N*(N-1));
*(a+N*(N-1))=*min;
*min=t;
min=a+1;//第四个
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
if((a+N*i+j)!=a&&(a+N*i+j)!=a+N-1&&(a+N*i+j)!=a+N*(N-1)&&*min>*(a+N*i+j))
{
min=(a+N*i+j);
}
}
}
t=*(a+N*N-1);
*(a+N*N-1)=*min;
*min=t;
}
int main()
{
int data[N][N];
int i,j,*p;
p=&data[0][0];
printf("输入%d行%d列的数组\n",N,N);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
scanf("%d",&data[i][j]);
}
}
zhuanhuan(p);
printf("转换后的数组是\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%-3d",data[i][j]);
}
printf("\n");
}
return(0);
}