将一个5*5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素

#include <stdio.h>
int main()
{

void max_center_min_side(int a[5][5]);
int num[5][5];
int i,j;
printf("请输入5*5数组:\n");                
for(i=0;i<5;i++)
{
	for(j=0;j<5;j++)
	   scanf("%d",&num[i][j]);	
	}
max_center_min_side(num);
printf("调整后的数组:\n");
for(i=0;i<5;i++)
{
	for(j=0;j<5;j++)
	{
		printf("%d ",num[i][j]);
    }
	printf("\n");
}
return 0;
}

void max_center_min_side (int a[5][5])
{

int max,min,d,x,i,j,w,u,r,o,y,e,g,l,t;                       //找最大的数字
max=a[0][0];
for(i=0;i<5;i++)
{
    for(j=0;j<5;j++)
	{
	   if(max<=a[i][j])
	   {
		   max=a[i][j];
		   d=i;
		   x=j;
	   }
	}
}
min=a[0][0];                                               //找最小的数字
for(i=0;i<5;i++)
{
	for(j=0;j<5;j++)
	{
	   if(min>=a[i][j])
		{
		  min=a[i][j];
		  w=i;
		  u=j;
	   }
	}       	   
}
min=a[0][0];                                             //找第二小数字
for(i=0;i<5;i++)
{
	for(j=0;j<5;j++)
	{
	   if(min>=a[i][j])
	   {
		   if(a[i][j]>a[w][u])
		   {
		     min=a[i][j];
		     r=i;
		     o=j;
		   }
	       if(a[i][j]==a[w][u]&&5*i+j<5*w+u)
		   {
			   min=a[i][j];
		       r=i;
		       o=j;
		   }
	   }
	}
}
min=a[0][0];                                              //找第三小数字
for(i=0;i<5;i++)
{
	for(j=0;j<5;j++)
	{
	   if(min>=a[i][j])
	   {
		   if(a[i][j]>a[r][o])
		   {
		     min=a[i][j];
		     y=i;
		     e=j;
		   }
	       if(a[i][j]==a[r][o]&&5*i+j<5*r+o)
		   {
			   min=a[i][j];
		       y=i;
		       e=j;
		   }
	   }
	}
}
min=a[0][0];                                              //找第四小的数字
for(i=0;i<5;i++)
{
	for(j=0;j<5;j++)
	{
	   if(min>=a[i][j])
	   {
		   if(a[i][j]>a[y][e])
		   {
		     min=a[i][j];
		     g=i;
		     l=j;
		   }
		   if(a[i][j]==a[y][e]&&((5*i+j)<(5*y+e)))
		   {
			 min=a[i][j];
		     g=i;
		     l=j;
		   }
	   }
	}
}
t=a[d][x];                                               //将找到的值按顺序交换
a[d][x]=a[2][2];
a[2][2]=t;

t=a[w][u];
a[w][u]=a[0][0];
a[0][0]=t;

t=a[r][o];
a[r][o]=a[0][4];
a[0][4]=t;

t=a[y][e];
a[y][e]=a[4][0];
a[4][0]=t;

t=a[g][l];
a[g][l]=a[4][4];
a[4][4]=t;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值