程序代码:
#include<stdio.h>
int min(int (*a)[5])
{
int i,j,*min,t;
min=a;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
if(*(a[i]+j)<*min)
min=(a[i]+j); //交换地址
}
t=*min;
*min=*(a[0]+0);
*(a[0]+0)=t;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
if(i==0&&j==0) continue; //跳过左上角最小值
if(*(a[i]+j)<*min)
min=(a[i]+j);
}
t=*min;
*min=*(a[0]+4);
*(a[0]+4)=t;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
if(i==0&&j==0||i==0&&j==4) continue; //跳过左上 右上
if(*(a[i]+j)<*min)
min=(a[i]+j);
}
t=*min;
*min=*(a[4]+0);
*(a[4]+0)=t;
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(*(a[i]+j)<*min)
min=(a[i]+j);
}
t=*min;
*min=*(a[4]+4);
*(a[4]+4)=t;
}
int max(int (*a)[5])
{
int i,j,*max,t;
max=a;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
if(*(a[i]+j)>*max)
max=(a[i]+j);
}
t=*max;
*max=*(a[2]+2);
*(a[2]+2)=t;
}
int main()
{
int a[5][5]={{16,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}};
int i,j;
printf("原先矩阵:\n");
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
printf("%4d ",a[i][j]);
printf("%4d",a[i][j]);
printf("\n");
}文章来源地址https://www.toymoban.com/news/detail-821124.html
min(a); //找出最小的一一赋给左上 右上 左下 右下
max(a); //找出最大赋给中间
printf("新矩阵:\n");
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
printf("%4d ",a[i][j]);
printf("%4d",a[i][j]);
printf("\n");
}文章来源:https://www.toymoban.com/news/detail-821124.html
}
到了这里,关于定义一个5*5的矩阵(二维数组),赋上初值,通过调用函数实现:将数组中的最大值放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大存放),在主函数中输出变换后的数组。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!