小兔子的果园

题目描述:
小兔子有n个果园,果园里有许多果树,有苹果树,芒果树,香蕉树,李子树,无花果树。
终于到了丰收的季节,小兔子从每个果园采了许多的水果,现在小兔子想给每个果园的产量排序。
因为小兔子爱吃芒果,所以按芒果的数量从大到小排序,如果芒果的数量相同,那就按照其他水果的总数量从小到大排序。
不会存在芒果数量相同且其他水果的总数量相同的情况。
输入:
第一行输入一个n,代表n个果园(1<=n<=10)
接下来n行,每行五个数,分别代表小兔子从果园里采摘的苹果数量,芒果数量,香蕉数量,李子数量,无花果数量
每个水果的数量不超过10,且没有负数。

输出:
输出n个果园产量排序后的结果

完整代码:

#include "stdio.h"		//程序思路:按题目要求选出最多芒果,如一样则比其他水果数量,依次储存b数组并给其赋0避免再次参与判断 
main(){
	int n,a[20][10]={0},b[20][10]={0},i,j,max,sum1,sum2,h,x=0,t;
	scanf("%d",&n);		//输入果园数 
	for(i=0;i<n;i++)
		for(j=0;j<5;j++)		//输入所有水果数量 
		scanf("%d",&a[i][j]);
		for(t=0;t<n;t++)
			{
					max=a[0][1];	//令第一果园芒果数为最大 
					h=0;			//h为其下标 
			for(i=1;i<n;i++)
			{					
				if(a[i][1]>max)		//有比其大则为大 
				{
					max=a[i][1];
						h=i;
				}
				if(a[i][1]==max)		//同大则判断其它水果 
				{	if(a[i][1]==0)		// a[i][1]为零则参与过运算直接跳过(因为最大不可能为0所以当 a[0][1]为0时最大值一定不为 a[0][1]所以不用特判初始为0的情况) 
						continue;		
						sum1=0;			//清零 
						sum2=0;
					for(j=0;j<5;j++)		//累加当前最大芒果其他水果数 
						sum1+=a[h][j];
						sum1-=a[h][1];
					for(j=0;j<5;j++)
						sum2+=a[i][j];		//累加同数量芒果其他水果数 
						sum2-=a[i][1];
						if(sum1>sum2)		//判断其他水果数量 
							{
								max=a[i][1];		
								h=i;	
							}	
						 		}			
						 			}
					for(j=0;j<5;j++)			//将最大水果数赋值b数组 
						b[x][j]=a[h][j];
							x++;
					for(j=0;j<5;j++)			//归零不重复判断 
						a[h][j]=0;
							}	 	
			
			for(i=0;i<n;i++)				//输出 
				{
					for(j=0;j<5;j++)
					printf("%d ",b[i][j]);
					printf("\n");	
				}
			
		
} 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值