高分悬赏!急!!!将一个5x5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(按从左到右,从上

到下顺序存放)
#include<iostream> //到底有什么错误啊?我找了好久也没找出来
using namespace std;
int main()
{ void change(int*);
int a[5][5],i=0,j=0;
for(;i<5;i++)
for(;j<5;j++)cin>>a[i][j];
int*p=&a[0][0];
change(p);
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,*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;
else if(*pmin>*(p+5*i+j))pmin=p+5*i+j;
}
temp=*pmax;
*pmax=*(p+12);
*(p+12)=temp;

temp=*pmin;
*pmin=*p;
*p=temp;

pmin=p+1;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(*pmin>*(p+5*i+j)&&(p+5*i+j)!=p)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((*pmin>*(p+5*i+j))&&((p+5*i+j)!=p)&&((p+5*i+j)!=(p+4)))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(*pmin>*(p+5*i+j)&&((p+5*i+j)!=p)&&((p+5*i+j)!=(p+4))&&((p+5*i+j)!=(p+20)))pmin=p+5*i+j;
temp=*pmin;
*pmin=*(p+24);
*(p+24)=temp;
}

我没有看你的代码,我这里给个思路,转化为一维数组进行:
1.先将矩阵中的数组依次添加到 一个int[25]的矩阵,这个不难实现吧?
2.对这个数组从小到大排下序,这个不难实现吧?
3 在定义一个int[5],用来依次存放 排序后数组的 两端的数(最大的一个,最小的4个)
4. 依次赋值给矩阵就可以了, 其实3,4可以合并的。
有问题联系我
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答
大家正在搜