1、百钱买百鸡问题一百个铜钱买了一百只鸡,其中公鸡一只5钱、母鸡一只3钱,小鸡一钱3只,问一百只鸡中公鸡、母鸡、小鸡各多少)。这是一个古典数学问题,设一百只鸡中公鸡、母鸡、小鸡分别为x,y,z,问题化为三元一次方程组:这里x,y,z为正整数,且z是3的倍数;由于鸡和钱的总数都是100,可以确定x,y,z的取值范围:1) x的取值范围为1202) y的取值范围为1333) z的取值范围为399,步长为3 对于这个问题我们可以用穷举的方法,遍历x,y,z的所有可能组合,最后得到问题的解。数据要求问题中的常量:无问题的输入:无问题的输出:int x,y,z /*公鸡、母鸡、小鸡的只数*/初始算法1初始化
2、为1;2计算x循环,找到公鸡的只数;3计算y循环,找到母鸡的只数;4计算z循环,找到小鸡的只数;5结束,程序输出结果后退出。算法细化算法的步骤1实际上是分散在程序之中的,由于用的是for循环,很方便的初始条件放到了表达式之中了。步骤2和3是按照步长1去寻找公鸡和母鸡的个数。步骤4的细化 41 z1 42 是否满足百钱,百鸡 421 满足,输出最终百钱买到的百鸡的结果 422 不满足,不做处理 43 变量增加,这里注意步长为3流程图图5-8 程序执行流程图程序代码如下#include stdio.hmain()int x,y,z;for(x=1;x=20;x+)for(y=1;y=33;y+)for(z=3;z=99;z+=3)if(5*x+3*y+z/3=100)&(x+y+z=100)/*是否满足百钱和百鸡的条件*/ printf(cock=%d,hen=%d,chicken=%dn,x,y,z);分析程序运行结果如下:cock=4,hen=8,chicken=78cock=8,hen=11,chicken=81cock=12,hen=4,chicken=84对于这个问题实际上可以不用三重循环,而是用二重循环,因为公鸡和母鸡数确定后,小鸡数就定了,即。请同学们自己分析二重循环和三重循环的运行次数,做为练习自己调试这一方法。