5X5矩阵调换!

    技术2024-07-23  67

    将一个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;

    }

    最新回复(0)