您的位置:首页 > 其它

5X5矩阵调换!

2011-02-01 09:29 267 查看
将一个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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: