5X5矩阵调换!

来源:互联网 发布:apache 403 重定向404 编辑:程序博客网 时间:2024/04/28 21:37

将一个5X5矩阵中最大的元素放在中心,4个角分别放4个最小的元素,写一函数实现之!

#include<stdio.h>
int main()
{
 void change(int *);
 int i,j,*p,a[5][5];
 printf("please input martix:/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("the output marix:/n");
 for(i=0;i<5;i++)
 {
  for(j=0;j<5;j++)
  {
   printf("%4d",a[i][j]);
  }
    printf("/n");
 }
    return 0;
}
void change(int *p)
{
 int temp,i,j;
 int *pmin,*pmax;
 pmin=p;
 pmax=p;
 for(i=0;i<5;i++)
  for(j=i;j<5;j++)
  {
   if(*pmin>*(p+5*i+j)) pmin=p+5*i+j;
   if(*pmax<*(p+5*i+j)) pmax=p+5*i+j;
  }
  temp=*(p+12);
    *(p+12)=*pmax;
  *pmax=temp;

  temp=*p;
  *p=*pmin;
  *pmin=temp;
   
 pmin=p+1;
 for(i=0;i<5;i++)
  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;
 pmin=p+1;
 for(i=0;i<5;i++)
  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;
    pmin=p+1;
 for(i=0;i<5;i++)
  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;

}

原创粉丝点击