您的位置:首页 > 大数据 > 人工智能

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

2018-03-27 15:17 1486 查看
8.10 将一个5X5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大存放),写一函数实现之。用main函数调用。
个人代码如下#include<stdio.h>
int main()
{
int a[5][5],*k,i;
for(k=*a;k<*a+25;scanf("%d",k++)); //输入矩阵
void trans(int (*p)[5]); //声明转换函数
trans(a);
for(i=0;i<5;printf("\n"),i++)
for(k=*(a+i);k<*(a+i)+5;printf("%5d",*k++)); //输出矩阵
}

void trans(int (*p)[5])
{
int max,min1,min2,min3,min4; //分别定义最大数和4个最小数
int m,n;//分别定义最大数和4个最小数所在的行和列
int i,j;

//找最大数
for(i=0,max=*(*p),m=n=0;i<5;i++)
for(j=0;j<5;j++)
if(*(*(p+i)+j)>max)
{
max=*(*(p+i)+j);
m=i;n=j;
}
*(*(p+m)+n)=*(*(p+2)+2);*(*(p+2)+2)=max; //最大数换到矩阵中心

//找第一最小数
for(i=0,min1=max,m=n=0;i<5;i++)
for(j=0;j<5;j++)
if(*(*(p+i)+j)<min1)
{
min1=*(*(p+i)+j);
m=i;n=j;
}
*(*(p+m)+n)=*(*p);*(*p)=min1; //第一最小数换到矩阵左上角

//找第2️⃣最小数
for(i=0,min2=max,m=n=0;i<5;i++)
for(j=0;j<5;j++)
if(min1<*(*(p+i)+j)&&a
4000
mp;*(*(p+i)+j)<min2)
{
min2=*(*(p+i)+j);
m=i;n=j;
}
*(*(p+m)+n)=*(*p+4);*(*p+4)=min2; //第2最小数换到矩阵右上角

//找第3最小数
for(i=0,min3=max,m=n=0;i<5;i++)
for(j=0;j<5;j++)
if(min2<*(*(p+i)+j)&&*(*(p+i)+j)<min3)
{
min3=*(*(p+i)+j);
m=i;n=j;
}
*(*(p+m)+n)=*(*(p+4));*(*(p+4))=min3; //第3最小数换到矩阵左下角

//找第4最小数
for(i=0,min4=max,m=n=0;i<5;i++)
for(j=0;j<5;j++)
if(min3<*(*(p+i)+j)&&*(*(p+i)+j)<min4)
{
min4=*(*(p+i)+j);
m=i;n=j;
}
*(*(p+m)+n)=*(*(p+4)+4);*(*(p+4)+4)=min4; //第4最小数换到矩阵右下角
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐