Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / C语言经典题目:百钱买百鸡

百钱买百鸡问题公元钱五世纪,我国古代数学家张丘建在《算经》一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?分析:假设公鸡有x只,母鸡y只,小鸡z只。那x+y+z==100,且根据价格5*x+3*y+z/3==100。只要满足上面的两个等式的数量就行。我们可以利用C语言3重循环来穷举所有的答案。但是鸡的数目都是正整数,z/3可能会产生小数。所以不妨设买小鸡所用的钱为变量。不妨设公鸡数为int cock;母鸡数为hen;买小鸡所用的钱为p_chickens;还有分析等式发现公鸡的数量是<20只的,母鸡的数量是<=33只的,买小鸡所用的钱为p_chickens;所以程序如下:
  1. #include<stdio.h>   
  2. int main(void)  
  3. {  
  4.     int c;             //公鸡的数量   
  5.     int hen;           //母鸡的数量   
  6.     int p_chickens;   //买小鸡所花的钱   
  7.     for(c=0;c<20;c++)  
  8.     for(hen=0;hen<33;hen++)  
  9.     for(p_chickens=0;p_chickens<33;p_chickens++)  
  10.     if((5*c+3*hen+p_chickens==100)&&(c+hen+3*p_chickens==100))  
  11.     printf("公鸡有%d只,母鸡有%d只,小鸡有%d只 ",c,hen,3*p_chickens);   
  12.   
  13.     return 0;  
  14. }  
得到的答案是:如果公鸡的数量不能为0,可以去掉第一个答案。