实例016 百元买百鸡问题
1.题目
中国古代数学家张丘建在他的《算经》中提出了一个著名的“百钱买百鸡”问题,鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?
2.代码
使用for循环对3种鸡的数量在事先确定好的范围内进行穷举并判断,对满足条件的3种鸡的数量按指定格式输出,否则进行下次循环。
#include <stdio.h>int main()
{//声明变量 int cock, hen, chick; //公鸡、母鸡、小鸡for(cock=0; cock<=20; cock++) //公鸡的取值范围为0~20 for(hen=0; hen<=33; hen++) //母鸡的取值范围为0~33for(chick=0; chick<=99; chick++) //小鸡的取值范围为0~99{if(cock + hen + chick == 100) //鸡的数目要为100只 if(5*cock + 3*hen + chick/3 == 100) //钱数也要为100元 if(chick%3 == 0) //隐含小鸡的数目必须为3的倍数 { //输出满足条件的鸡的数目,这是一个有多个解的方程 printf("公鸡:%d 母鸡:%d 小鸡:%d\n",cock,hen,chick);}} return 0;
}3.技术要点
1)确定公鸡、母鸡、小鸡的遍历数值的范围。
2)隐含条件有时候容易被忽略掉,这里的隐含条件是小鸡的数目是3的倍数。
3)多层循环,多个if的判断,需要谨慎的写代码。
