百钱买百鸡问题的Java程序如下
public class chick {public static void main(String[] args) {
int i//母鸡
int j//公鸡
int k//小鸡
int num = 0//一共有几种
for(i=0i<=100/5i++)
{
for(j=0j<=100/3j++)
{
for(k=0k<=100k=k+3)
{
if(i+j+k == 100 && ((5*i+3*j+k/3) == 100))
{
num++
System.out.println("第"+num+"种情况")
System.out.println("母鸡数"+i+" "+"公鸡数"+j+" "+"小鸡数"+k)
}
}
}
}
}
}
运行结果
第1种情况
母鸡数0 公鸡数25 小鸡数75
第2种情况
母鸡数4 公鸡数18 小鸡数78
第3种情况
母鸡数8 公鸡数11 小鸡数81
第4种情况
母鸡数12 公鸡数4 小鸡数84
第二种情况下你有没有发现
你的循环条件变了?小鸡32只,公鸡100只,母鸡200只。这样已经超过了一百元了
,你解决的不是百元买百鸡的问题了!还有这个循环执行了次数是不同的!因为这个i
*
0.5
+
j
*
2
+
k
*
3的值
将很快到达一百!
java不会,写个c的,方法是一样的。
一百块可以买公鸡20只,母鸡33只,鸡仔100只。也就是说这三种鸡无论怎么组合,公鸡不可能超过20,母鸡不可能超过33,鸡仔不可能超过100。所以一个三重for循环就可以遍历所有组合,找出符合要求的组合。而且,你题目不完整,给你一个100钱能买的鸡的所有组合。如果要百钱买百鸡的话,把if语句的条件换成i+j+k==100即可。
for(int i=0i<=20++i)for(int j=0j<=33++j)
for(int k=0k<=100++k)
if(5*i+3*j+k==100)
printf("公鸡%d只,母鸡%d只,鸡仔%d只",i,j,k)