我这两个程序为什么输出结果不同?
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);
} }
问题点数:1、回复次数:4Top
1 楼BlueBent()回复于 2006-03-02 22:00:34 得分 0
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分也要结帖
Top
2 楼yunxiang_yang(Spirit163)回复于 2006-03-02 22:33:44 得分 1
这是枚举把
第2个程序“if(5*cocks+3*hens+chicks/3==100)”非3.0,这里就没有考虑chicks是否是3的整数倍,加个条件判断!Top
3 楼cunsh(村少)回复于 2006-03-02 23:17:23 得分 0
接分~Top
4 楼zhanxiang(JackieSky)回复于 2006-03-02 23:18:57 得分 0
同意楼上的!
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等
Top




