下面的代码这样写为什么不正确?

假设一只公鸡价格为5元,一只母鸡价格为3元,3只小鸡价格为1元,现用100买100只鸡。问有哪些解决方案。要求公鸡 母鸡 小鸡至少都有一只。
int g,m,x;
if((5*g+3*m+x/3<=100) && (g+m+x==100) && x%3==0)
printf("%d%d%d\n",g,m,x);

题目要求是求解决方案,你写的那只是求其中一种解决方案得到的数量吧,而且有求余运算,那样写可能造成数据丢失

http://zhidao.baidu.com/link?url=q8vscIDA5sE-PQkfg1txJ667P4q9pzlf7rQpH39OdejI_i2oOy1UvnOWNgl27biYjNy02dHG9zFKZ9E4MLUYYkXIbZGeu8QwFOuNWLPbBbW

请参考我写的C++代码:
#include
using namespace std;
int main()
{
int cock,hen,chick;//cock:公鸡;hen:母鸡;chick:小鸡
int count=1;
for(cock=1;cock<97;cock++)
{
for(hen=1;hen<97;hen++)
{
for(chick=3;chick<99;chick+=3)
{
if(100 == (cock+hen+chick) && 100==(5*cock+3*hen+chick/3))
{
cout<<"解决方案 #"<<count<<":"<<endl;
cout<<"cock: "<<cock<<endl;
cout<<"hen: "<<hen<<endl;
cout<<"chick: "<<chick<<endl;
count++;
}
}
}
}
}

以下是程序运行结果:
图片说明

x/3是不行的,整除会舍去小数,要你那样,可以将价格全部乘以3.

java 实现

int cock, hen, chick;
int sol = 1;

for(cock=0;cock<20;cock++) {
for(hen=0;hen<33;hen++) {
for(chick=3;chick<99;chick+=3) {
if ((cock+hen+chick==100)&&(cock*5 + hen*3 + chick/3 ==100)) {
System.out.println("Solution " + sol + ": cock:"+cock+" hen:"+hen+" chick:"+chick);
sol++;
}
}
}
}

参照 上面那个java代码 你把if语句套进for语句里面就好了。
像你这么写,计算机怎么来判断你的if语句是否成功呢,你就定义了3个int,他不会自动的给你从1,2,3开始一个一个试,要你自己用for语句来规定他。