6-6 指针做参数: 求解鸡兔同笼。 (10 分)指针

6-6 指针做参数: 求解鸡兔同笼。 (10 分)指针,第1张

6-6 指针做参数: 求解鸡兔同笼。 (10 分)指针

鸡兔同笼是中国古代的数学名题之一。 大约在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

结尾无空行

输出样例:
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;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5658087.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存