我这两个程序为什么输出结果不同?

BlueBent 2006-03-02 09:56:52
void 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++;
}
}





main()
{
int cocks,hens,chicks;
for(cocks=0;cocks<=19;cocks++)
for(hens=0;hens<=33;hens++)
{chicks=100-cocks-hens;
if(5*cocks+3*hens+chicks/3==100)
printf("cocks=%d,hens=%d,chicks=%d\n",cocks,hens,chicks);
} }
...全文
106 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
無為自強 2006-03-02
  • 打赏
  • 举报
回复
同意楼上的!

chicks/3的结果总是一个整数:
比如:
75/3 = 25;
77/3 = 25;
所以你的第二个程序就会多出几组数据来:3、20、77等

chicks/3.0的结果却是一个浮点数:
比如:
75/3 = 25.000000;
77/3 = 25.666667; //与前面的5*cocks+3*hens相加永远不会等于100的!
所以你的第一个程序就不会出现像这样的几组数据:3、20、77等
cunsh 2006-03-02
  • 打赏
  • 举报
回复
接分~
yunxiang_yang 2006-03-02
  • 打赏
  • 举报
回复
这是枚举把
第2个程序“if(5*cocks+3*hens+chicks/3==100)”非3.0,这里就没有考虑chicks是否是3的整数倍,加个条件判断!
BlueBent 2006-03-02
  • 打赏
  • 举报
回复
main()
{
int cocks,hens,chicks;
for(cocks=0;cocks<=19;cocks++)
{ for(hens=0;hens<=33;hens++)
{chicks=100-cocks-hens;
if(5*cocks+3*hens+chicks/3==100)
printf("cocks=%d,hens=%d,chicks=%d\n",cocks,hens,chicks);
} } }


问题解决...谁来回一下?我1分也要结帖

69,372

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧