C语言!百钱买百鸡

来源:百度知道 编辑:UC知道 时间:2024/05/21 16:24:01
已知大公鸡三文钱一只,大母鸡两文钱一只,小鸡一文钱买三只。现有100文钱,想买100只鸡,请编写程序解决这个问题。
谢谢各位高手啦……
不用for可以吗!!我下面这个程序要怎么改
main()
{int a=0,b,c;
while(a<=19)
{b=0;
while(b<=33)
{c=100-a-b;
if(5.0*a+3.0*b+c/3.0=100.0)
printf("%d %d %d\n",a,b,c);
b++;
}
a++;
}
}

********************* 算法以及书写上,似乎都有点小问题 *********************

如果“大公鸡5文钱一只,大母鸡3文钱一只,小鸡一文钱买三只”,且 a,b,c分别表示大公鸡,大母鸡,小鸡,那么......
if(5.0*a+3.0*b+c/3.0=100.0) 对于这一句,是有问题的:

1,像楼上说的,就是“=”与"=="问题,应该是“==”。
2,"5.0*a+3.0*b+c/3.0==100.0"中,设 x=c/3 ,那么你能保证 3*x==c 吗???
显然,是不能的,也就是说,小鸡的数目不一定是3的倍数。而根据题目,显然有c是3的倍数。这个问题用整除c%3==0来实现。
因此,正确的表示应该是:if(c%3==0&&(5.0*a+3.0*b+c/3.0==100.0))

这样,就没什么问题了。

基本貌似正确。有一个地方有错,

if(5.0*a+3.0*b+c/3.0=100.0)

应该是

if(5.0*a+3.0*b+c/3.0==100.0)

注意,是等于关系运算符==,不是赋值运算符。初学者很容易犯错误的。

另外,根据你这个判断式子,觉得题目好像应该是
“大公鸡5文钱一只,大母鸡3文钱一只,小鸡一文钱买三只”。