为什么会少解?(C语言)

来源:百度知道 编辑:UC知道 时间:2024/06/05 21:01:18
#include "stdio.h"
main()
{int cocks=0,hens,chicks;
while (cocks<=19)
{hens=0;
while (hens<=33)
{chicks=100-cocks-hens;
if (5.0*cocks+3.0*hens+chicks/3.0==100.0)
printf("%d %d %d\n",cocks,hens,chicks);
hens++;
}
cocks++;
}
}

得出的解为4组 但实际应该有7组 为什么会这样
另外if (5.0*cocks+3.0*hens+chicks/3.0==100.0)这一段的100前面为什么要两个等号。刚学 求解。谢谢了

得出的组数少可能是if (5.0*cocks+3.0*hens+chicks/3.0==100.0)中chicks/3.0的关系,chicks为int型,除以3未必是整数,经舍去小数部分,容易引起误差;
这段的100前的两个等号不是赋值,而是比较,是c语言中的逻辑判断
你程序中浮点型与整形混用是很容易出错的

这是百鸡百钱问题吧,貌似就4组啊。。。
那 == 表示判断两边值是否相等,在使用相等判断的时候要注意不要漏个 = ,不然就恒成立了