编程今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?


这个程序那里错了,求帮助

解法一:

我们先来看看孙子怎么解这道题。

“上置三十五头,下置九十四足。半其足得四十七。以少减多,再命之,上三除下四,上五除下七。下有一除上三,下有二除上五,即得”。

翻译成算术方法就是:

兔数(94÷2)-35=12(只)

鸡数35-12=23 (只)

这一思路新颖而奇特,其“砍足法”也令古今中外数学家赞叹不已。这种思维方法叫化归法。化归法就是在解决问题时,先不对问题采取直接的分析,而是将题中的条件或问题进行变形,使之转化,直到最终把它归成某个已经解决的问题。

解法二:假设法

假设法(一)

兔子有4只脚,鸡只有两只。假设题目中的35头全是鸡,那么:

35×2=70(只)

如果35只都是鸡,则有70只脚。但实际上一共有94只脚。

94-70=24(只)

这多出来的24只脚就是兔子的另外两只脚。那么:

24÷2=12(只)

这12只就是小兔桥宴子。

35-12=23(只)

这23只就是小鸡。

假设法(二)

假设题目中35头全是兔子,则:

35×4=140(只)

140-94=46(只)

这46只脚是给鸡多算的,每只鸡多算2只脚,那么:

46÷2=23(只)小鸡

35-23=12(只)小兔子

解法三:一元一次方程法

设鸡有x只,则兔庆雹有35-x只。

2x+4(35-x)=94

2x=46

x=23

35-x=12

得出鸡有23只,兔有12只。

解法四:二元一次方程法

设鸡有x只,兔有y只。

x+y=35

2x+4y=94

解得x=23,y=12,即鸡有23只,兔有12只。

解法五:列表法



向左转|向右转




此法只适用于头数较少的「鸡兔同笼」问题,对于头数较多的题,不建议选用此法。

解法六:抬腿法

假设让所有的鸡抬起一只脚,所有的兔子抬起两只脚,则有:

94÷2=47

抬脚以后,笼子里的兔子脚只比鸡脚多了1个,那么:

47-35=12就是兔子的个数。

35-12=23就是鸡的个数。

解法七:砍腿法

假设把所有鸡的脚都砍掉,把每只兔子砍掉2只脚,则此时笼里的情况是:鸡没脚了,都一屁股坐在了地上,兔子还有两只脚站着。

94-35×2=24

那么这24只脚就都是兔子的,且每只兔子都有2只脚站着。

24÷2=12便是兔子的只数。

35-12=23就是鸡的只数。

解法八:画图法

画图法是低年级小朋友较为喜欢的一种方法,画图法直观又生动,但它和列表法一样,只适用于头数较少的题目。怎么算,就像下面这样自己去画图吧!


向左转|向右转


解法九:特异功能法

我们都知道鸡有2只脚,兔子有4只脚。但是鸡有2个翅膀,兔子可没有。假设鸡的两只翅膀也可以当脚使,那么:

35×4=140

140-94=46

其实呀,这里多出来的46并不是鸡的脚,二是它们的翅膀对不对。每只鸡有2个翅膀对吧,那么:

46÷2=23(只)小鸡

35-23=12(只)小兔子

解法十:杂技法

如果所有的兔子都会耍杂技,只要训练员一喊“开始”,它们都会乖乖听话抬起两条后腿,那么这时站在地上的鸡和兔子都是两只脚站立了。

35×2=70

而誉消帆本来是有94只脚的。

94-70=24,这不是兔子抬起来的脚嘛。

24÷2=12(只)

这12只就是小兔子。

35-12=23(只)

这23只就是小鸡。


一步w数学x,让孩子彻底掌握“鸡兔同笼”


#include <stdio.h>
void main ()
{
 unsigned int a,b,h,f,m,n;
 char g;
 while (1)
 {
  h=f=m=n=0;
  printf("输入所有鸡和兔子的头数和脚数: ");
  scanf("%u,%u",&h,&f);
  fflush (stdin);
  while (f%2==1||h<0||f<2*h||f>4*h)
  {
   h=f=m=n=0;
   printf("输入数据有误,请重新输入: ");
   scanf("%u,%u",&h,&f);
   fflush (stdin);
  }
  for (a=0;a<=h;a++)
  {
   for (b=0;b<=h;b++)
   {
    m=a+b,n=2*a+4*b;
    if (h==m&&升谨f==n)
     printf(" 鸡的头数=%u 兔子的头数=%u ",a,b);
   }
  }
  printf("鸡和兔子的头猛肢数=%u 鸡和兔子的脚吵知基数=%u ",h,f);
  printf("确认结果,是否退出?<请按y/Y>否则请按任意键重新输入。 ");
  g=getch();
  if (g=='y'||g=='Y') break;
 }
}