在5*5数组中找到最大值和四个最小值并分别放在数组中心和四个角,四个角按左到右、上到下的顺序放置(指针法)

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

void max_center_min_side(int *a);
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)
{

int i,j,w,u,r,o,y,e,t;                       //找最大的数字
int *max,*min,*min1,*min2,*min3;
max=a+12; 
for(i=0;i<5;i++)
{
    for(j=0;j<5;j++)
	{
	   if(*max<*(a+5*i+j))
	   {
		   t=*max;                                               //将找到的值交换
           *max=*(a+5*i+j);
		   *(a+5*i+j)=t;
	   }
	}
}
printf("%d\n",*max);
min=a;                                               //找最小的数字
for(i=0;i<5;i++)
{
	for(j=0;j<5;j++)
	{
	   if(*min>*(a+5*i+j))
	   {
		  w=i;
		  u=j;
		  t=*(a+5*i+j);
		  *(a+5*i+j)=*min;
		  *min=t;
	   }
	}	       	   
}
printf("%d\n",*min);
min1=a+4;                                             //找第二小数字
for(i=0;i<5;i++)
{
	for(j=0;j<5;j++)
	{
	   if(*min1>*(a+5*i+j))
	   {
		   if(*(a+5*i+j)>*a)
		   {
			   r=i;
			   o=j;
			   t=*min1;
		       *min1=*(a+5*i+j);
		       *(a+5*i+j)=t;
		   }
	       if(*(a+5*i+j)==*a&&5*i+j>5*w+u)
		   {
			   r=i;
			   o=j;
			   t=*min1;
		       *min1=*(a+5*i+j);
		       *(a+5*i+j)=t;
			  
		   }
	   }
	}
}
printf("%d\n",*min1);
min2=a+20;                                              //找第三小数字
for(i=0;i<5;i++)
{
	for(j=0;j<5;j++)
	{
	   if(*min2>*(a+5*i+j))
	   {
		   if(*(a+5*i+j)>*(a+4))
		   {
		      t=*min2;
		      *min2=*(a+5*i+j);
		      *(a+5*i+j)=t;
			  y=i;
			  e=j;
		   }
	       if(*(a+5*i+j)==*(a+4)&&5*i+j>5*r+o)
		   {
			   t=*min2;
		       *min2=*(a+5*i+j);
		       *(a+5*i+j)=t;
			   y=i;
			   e=j;
		   }
	   }
	}
}
printf("%d\n",*min2);
min3=a+24;                                              //找第四小的数字
for(i=0;i<5;i++)
{
	for(j=0;j<5;j++)
	{
	   if(*min3>*(a+5*i+j))
	   {
		   if(*(a+5*i+j)>*(a+20)) 
		   {
		     t=*min3;
		     *min3=*(a+5*i+j);
		     *(a+5*i+j)=t;
		   }
		   if(*(a+5*i+j)==*(a+20)&&((5*i+j)>(5*y+e)))
		   {
			  t=*min3;
		      *min3=*(a+5*i+j);
		      *(a+5*i+j)=t;
		   }
	   }
	}
}
printf("%d\n",*min3);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值