C语言求百钱百鸡问题

来源:百度知道 编辑:UC知道 时间:2024/05/26 19:21:37
//百钱百鸡问题
#include<stdio.h>
#include<conio.h>

int main()
{
int cocks;
printf("%8s%8s%8s\n","cocks","hens","chicks");
for (cocks=0;cocks<=19;cocks++)
{
int hens;
for (hens=0;hens<=33;hens++)
{
int chicks;
chicks=100-cocks-hens;
if(5*cocks+3*hens+chicks/3.0==100) ■
printf("%8d%8d%8d\n",cocks,hens,chicks);
}
}
getch();
return 0;
}
就在我作了个大方框标记的地方,chicks/3.0处,用3.0和3运行的结果是不同的。为什么会这样?我用的DEV C++运行的。用3.0运行结果是正确的,用3 运行的结果则是
cocks hens chicks
0 25 75
3 20 77
4 18 78
7 13 80
8 11 81
11 6 83
12 4 84
明显是错误的,为什么会这样?

当然会错阿,如果是3就变成整除了,
整除结果 3/3 = 4/3 = 5/3 = 1;这样当然会出错

不凡看一个结果
11*5+ 6*3+ 83/3 = 55+18+27 = 100
83/3 = 27

建议这样改
if(5*cocks+3*hens+chicks/3.0==100)
>>
if((5*cocks+3*hens+chicks)*3==300)