百钱买百鸡用编程的方法怎么写??

母鸡3元,公鸡5元,小鸡一元三只。谢谢!
2025-05-23 16:28:32
推荐回答(3个)
回答1:

1楼的方法不对,因为没有保证是百钱,而只是保证百鸡。下面是正确的方法:

#include
#include

int main()
{
for (int i = 0; i <= 33; i++)
{
int j_end = (100 - i*3)/5;
for (int j = 0; j <= j_end; j++)
{
int k = (100 - i*3 - j*5)*3;
if (i + j + k == 100)
{
printf("%d %d %d\n", i, j , k);
}
}
}
return 0;
}

程序运行结果:(有4个解)
4 12 84
11 8 81
18 4 78
25 0 75

回答2:

用C#.NET来编写可以这样写:

int MaxNum=100;//鸡的数量
int MaxPri=100;//钱的数量

//假设母鸡从0只到100只
for (int x=0;x<=MaxNum;x++){
//假设公鸡从0只到100只
for (int y=0;y<=(MaxNum-x);y++){
//假设小鸡从0只到100只
for (int z=0;z<=(MaxNum-y-x);z=z+3){
//计算鸡总数和价格总和是否满足条件
if (((x+y+z)==MaxNum)&&((x*3+y*5+z/3)==MaxPri))
//满足条件则输出结果
Response.Write(x.ToString()+" "+y.ToString()+" "+z.ToString()+"
");
}
}
}

结果:
4 12 84
11 8 81
18 4 78
25 0 75

PS:只需要修改参数MaxNum和MaxPri就可以很方便地计算任何数量任意钱的结果集。

回答3:

1楼的方法不对,因为没有保证是百钱,而只是保证百鸡。下面是正确的方法:
#include

#include

int
main()
{
for
(int
i
=
0;
i
<=
33;
i++)
{
int
j_end
=
(100
-
i*3)/5;
for
(int
j
=
0;
j
<=
j_end;
j++)
{
int
k
=
(100
-
i*3
-
j*5)*3;
if
(i
+
j
+
k
==
100)
{
printf("%d
%d
%d\n",
i,
j
,
k);
}
}
}
return
0;
}
程序运行结果:(有4个解)
4
12
84
11
8
81
18
4
78
25
0
75