将一个5*5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(按从左到右、从上到下顺序依次从小到大存放),编写一函数来实现。用main函数调用。
#include <iostream>
using namespace std;
int main()
{
void change(int *p);
int a[5][5],*p,i,j;
cout<<"input matrix:"<<endl;
for(i=0;i<5;i++)
{for(j=0;j<5;j++)
cin>>a[i][j];}
p=&a[0][0];
change(p);
cout<<"Now,matrix:"<<endl;
for(i=0;i<5;i++)
{for(j=0;j<5;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
return 0;
}
void change(int *p)
{
int i,j,temp;
int *pmax,*pmin;
pmax=p;
pmin=p;
for(i=0;i<5;i++)
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;
pmin=p+1;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(((p+5*i+j)!=p)&&(*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(((p+5*i+j)!=(p+4))&&((p+5*i+j)!=p)&&(*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(((p+5*i+j)!=p)&&((p+5*i+j)!=(p+4))&&(((p+5*i+j)!=(p+20))&&*pmin>*(p+5*i+j)))
pmin=p+5*i+j;
temp=*pmin;
*pmin=*(p+24);
*(p+24)=temp;
}