解法一:
我们先来看看孙子怎么解这道题。
“上置三十五头,下置九十四足。半其足得四十七。以少减多,再命之,上三除下四,上五除下七。下有一除上三,下有二除上五,即得”。
翻译成算术方法就是:
兔数(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;
}
}