C语言程序百鸡百钱出错

有一个百鸡百钱的问题题目是100块钱买100只鸡,公鸡5块,母鸡3块,小鸡3只一块。我照着编的程序是#include<stdio.h>voidmain(){intcock... 有一个百鸡百钱的问题
题目是100块钱买100只鸡,公鸡5块,母鸡3块,小鸡3只一块。
我照着编的程序是#include <stdio.h>
void main()
{
int cocks=0,hens,chicks; /*假设x,y,z*/
while (cocks<=19) /*x小于等于19*/
{hens=0; /*加入y=0*/
while (hens<=33) /*y小于等于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++; /*假如y不满足条件加一返回*/
}
cocks++; /*假如x不满足条件加一返回*/
}
}
可是结果和她的不一样
他的结果是0 2 5 7 5
3 20 77
4 18 78
7 13 80
8 11 81
11 6 83
12 4 84
我的运行后只有
0 2 5 7 5
4 18 78
8 11 81
12 4 84
展开
 我来答
永Lshe
2009-07-12 · TA获得超过121个赞
知道答主
回答量:135
采纳率:0%
帮助的人:96.2万
展开全部
简单的和你说 你是对的 他是错的,且是典型错解 相信自己!!!
因为int定义的整行变量 所以计算中小数被自动舍去 导致一些近似值相加后也=100
因为这里小鸡一定要是3的倍数 不然就会出现该问题 对于白鸡问题初遇者 无论用for或while 编译都是会出现的一个常见错误
所以 你可以的 继续努力啊~-~
百度网友8080644
2009-07-01 · TA获得超过356个赞
知道小有建树答主
回答量:182
采纳率:0%
帮助的人:206万
展开全部
呵呵 我也编了一个这样的程序 结果和你一样 我不知道你说的这个她是谁
但是她的结果是错误的
你可以代入算一下 3*5+20*3+77/3!=100
原因很可能是她把 if (5.0*cocks+3.0*hens+chicks/3.0==100.0) 写成了
if (5.0*cocks+3.0*hens+chicks/3==100.0) 这样chicks/3将会做取整运算 才会得出她这样的结果
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
慕容冰绡
2009-07-01 · TA获得超过1950个赞
知道小有建树答主
回答量:682
采纳率:50%
帮助的人:516万
展开全部
if (5.0*cocks+3.0*hens+chicks/3.0==100.0)这句不对,因为按照她的结果应该是不正好也行的,所以把3.0改成3试试,因为3是整形,3.0则不是,100.0也不对,float型判断==是不正确的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Draconious
2009-07-01 · TA获得超过6242个赞
知道大有可为答主
回答量:2142
采纳率:0%
帮助的人:2565万
展开全部
你的结果没有错,是他的有问题,他有而你没有的答案里小鸡的个数不是3的倍数,,也就是说1块钱没有买到3只小鸡,这是不允许的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式