12球问题

(1) 有十二个球,从外观上看,大小、色彩、形状完全一样。只是在重量上,多数球(其中十一颗)是标准重量(标准重量是多少?不知道),只知道有一颗球与其余十一颗的重量不同,但不知道是偏重还是偏轻。有一只天平,没有砝码。你能用这只天平,称量三次,找出那颗重量不标准的球吗?而且要确定那颗不标准的球是轻了还是重了。

(2) 

(3) 源程序代码

/************************************
 12球问题
 输入:12个球的重量,且只有一个球可以或轻或重
 输出:其中不正常的那个球
**************************************/
#include<stdio.h>
int main()
{
	int balls[12];
	int i;
     printf("请输入球的重量,其中0表示正常,1表示偏重,-1表示偏轻\n");
	 for(i=1;i<=12;i++)
	 {
	    printf("请输入第%d球的重量",i);
		scanf("%d",&balls[i-1]);
	 }
	 if((balls[0]+balls[1]+balls[2]+balls[3])==(balls[4]+balls[5]+balls[6]+balls[7]))
	 {
	     if((balls[0]+balls[1]+balls[2])==(balls[8]+balls[9]+balls[10]))
		 {
		     if(balls[11]>balls[4])
			 {
			     printf("不合格的球是12且偏重");
			 }else
			 {
			     printf("不合格的球是12且偏轻");
			 }
		 }else if((balls[0]+balls[1]+balls[2])<(balls[8]+balls[9]+balls[10]))
		 {
		      if(balls[8]==balls[9])
			  {
			     printf("不合格的球是11且偏重");
			  }else if(balls[8]<balls[9])
			  {
			     printf("不合格的球是10且偏重");
			  }else
			  {
			     printf("不合格的球是9且偏重");
			  }
		 }else{
		   if(balls[8]==balls[9])
			  {
			     printf("不合格的球是11且偏轻");
			  }else if(balls[8]<balls[9])
			  {
			     printf("不合格的球是9且偏轻");
			  }else
			  {
			     printf("不合格的球是10且偏轻");
			  }
		 }
	 }else if((balls[0]+balls[1]+balls[2]+balls[3])>(balls[4]+balls[5]+balls[6]+balls[7]))
	 {
	       if((balls[2]+balls[3]+balls[4]+balls[5]+balls[6])==(balls[7]+balls[8]+balls[9]+balls[10]+balls[11]))
		   {
		       if(balls[0]>balls[1])
			   {
			      printf("不合格的球是1且偏重"); 
			   }else
			   {
			      printf("不合格的球是2且偏重");  
			   }
		   }else if((balls[2]+balls[3]+balls[4]+balls[5]+balls[6])>(balls[7]+balls[8]+balls[9]+balls[10]+balls[11]))
		   {
		       if(balls[2]==balls[3])
			   {
			      printf("不合格的球是8且偏轻"); 
			   }else if(balls[2]>balls[3])
			   {
			      printf("不合格的球是3且偏重");  
			   }else{
                  printf("不合格的球是4且偏重");  		
			   }
		   }else{
		        if(balls[4]==balls[5])
			   {
			      printf("不合格的球是7且偏轻"); 
			   }else if(balls[4]>balls[5])
			   {
			      printf("不合格的球是6且偏轻");  
			   }else{
                  printf("不合格的球是5且偏轻");  		
			   }
		   }
	 }else
	 {
		 if((balls[2]+balls[3]+balls[4]+balls[5]+balls[6])==(balls[7]+balls[8]+balls[9]+balls[10]+balls[11]))
		   {
		       if(balls[0]>balls[1])
			   {
			      printf("不合格的球是2且偏轻"); 
			   }else
			   {
			      printf("不合格的球是1且偏轻");  
			   }
		   }else if((balls[2]+balls[3]+balls[4]+balls[5]+balls[6])>(balls[7]+balls[8]+balls[9]+balls[10]+balls[11]))
		   {
		       if(balls[4]==balls[5])
			   {
			      printf("不合格的球是7且偏重"); 
			   }else if(balls[4]>balls[5])
			   {
			      printf("不合格的球是5且偏重");  
			   }else{
                  printf("不合格的球是6且偏重");  		
			   }
		   }else{
		        if(balls[2]==balls[3])
			   {
			      printf("不合格的球是8且偏重"); 
			   }else if(balls[2]>balls[3])
			   {
			      printf("不合格的球是4且偏轻");  
			   }else{
                  printf("不合格的球是3且偏轻");  		
			   }
		   }
	 
	 }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值