鸡兔同笼是中国古代的数学名题之一。 大约在1500年前,《孙子算经》中就记载了这个有趣的问题。书中是这样叙述的: 今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?这四句话的意思是: 有若干只鸡兔同在一个笼子里,从上面数,有35个头,从下面数,有94只脚。问笼中各有多少只鸡和兔? 本题要求编写函数,利用指针做参数求解鸡兔同笼问题。头和脚的数目从键盘输入。
函数接口定义:
void fun ( int h,int f,int *p,int *q );
其中h和f由主函数传入,代表头和脚的数目, (假定输入数据都合理)。 函数fun可求出鸡和兔的数目,并在主函数输出。
裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如:
#include
void fun ( int h,int f,int *p,int *q );
int main()
{
int h,f,x,y ;
scanf("%d%d", &h, &f);
fun (h ,f, &x,&y ); //x、y代表鸡和兔的数目
printf("cocks=%d,rabbits=%d", x,y);
return 0;
}
输入样例:
35 94
35 94
结尾无空行
输出样例:
cocks=23,rabbits=12
结尾无空行
鸡兔同笼问题,我们可以用小学的思想解决这个问题:
假如鸡与兔子都抬起两只脚,还剩下94-35×2=24只脚 , 这时鸡是屁股坐在地上,地上只有兔子的脚,而且每只兔子有两只脚在地上,所以有24÷2=12只兔子,就有35-12=23只鸡。
void fun ( int h,int f,int *p,int *q )//p鸡,q兔
{
int n, m;//n鸡,m兔
m = (f-2*h)/2; //鸡和兔全部抬起两只脚,地上只剩下兔子的脚
n = h-m; //总头数—兔子头数=鸡的头数
*p = n; //赋值给p,q
*q = m;
}



