您的位置:首页 > 其它

将一个5X5的矩阵中最大的元素放在中心

2011-03-12 14:08 417 查看

将一个5X5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(按从左到右,从上到下顺序依次从小到大存放),写一函数实现之,用主函数调用。

我没用手动输入。太累了。测试一次输入25个数。人会疯的

#include<iostream>
#include<string>
#include<iomanip>
using namespace std;

int main()
{
void swap(int *p);
int a[5][5];
int j,k,i;
int *p;
for(i=1,j=0;j<5;j++)
{
for(k=0;k<5;i++,k++)
a[j][k]=i;
}

p=&a[0][0];
swap(p);

for(j=0;j<5;j++)
{
for(k=0;k<5;k++)

cout<<setw(3)<<a[j][k]<<" ";
cout<<endl<<endl;
}

}

void swap(int *p)
{
int j,k,i,temp;
int *min,*max;

max=p;
min=p;

// ————————————————————————————

for(j=0;j<5;j++)
{
for(k=0;k<5;k++)
{ if(*max<*(p+5*j+k))

max=(p+5*j+k);

if(*min>*(p+5*j+k))

min=p+5*j+k;
}
}

temp=*(p+12);//——————————————————
*(p+12)=*max;//————找出最大数与方阵中间交换———
*max=temp;//——————————————

temp=*(p+0);//——————————————————
*(p+0)=*min;//———找出最小数与方阵左上角交换——
*min=temp;//———————

//——————————————————————————————

min=(p+1);//假设min在0 1 (0 0已经存入最小数)
;
for(j=0;j<5;j++)
{
for(k=0;k<5;k++)
{ if(j==0&&k==0)continue ;//不执行

if(*min>*(p+5*j+k))

min=p+5*j+k;
}

}

temp=*(p+4);//——————————————————
*(p+4)=*min;//———找出次小数与方阵右上角交换——
*min=temp;//——————————————
//——————————————————————————————

min=(p+1);

for(j=0;j<5;j++)
{
for(k=0;k<5;k++)
{ if((j==0&&k==0)||(j==0&&k==4)) continue ;//不执行

if(*min>*(p+5*j+k))

min=p+5*j+k;

}
}

temp=*min;//——————————————————
*min=*(p+20);//———找出次次小数与方阵左下角交换——
*(p+20)=temp;//——————————————
//——————————————————————————————

min=p+1;//假设min在0 1 (0 0 /0 4 /4 0已经存入最小数/次小数/次次小数)

for(j=0;j<5;j++)
{
for(k=0;k<5;k++)
{
if((j==0&&k==0)||(j==0&&k==4)||(j==4&&k==0))continue  ;//不执行

if(*min>*(p+5*j+k))

min=(p+5*j+k);

}
}

temp=*(p+24);//——————————————————
*(p+24)=*min;//———找出次次次小数与方阵右下角交换——
*min=temp;//——————————————
//----------------------------------------------------------------

}
本文出自 “Chaos代码空间” 博客,请务必保留此出处http://flzt5354.blog.51cto.com/1568074/513747
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐