语言经典算法:现拿100文钱去买100只鸡,公鸡为5文钱一只,母鸡3文钱一只,小鸡是1文钱买三只。输出组合。

如题所述

不知道你要求什么。是要用c语言写程序吗?还是直接写出组合就行了?
假设小鸡x只,公鸡y只,母鸡z只,则可列方程为:
x+y+z=100
x/3+5y+3z=100
化简下:
x=100-x-y
z=(100-7y)/4
用c语言实现上述算法,由于公鸡5文钱一只,则,公鸡的数目为0~25只,公鸡数目递增,算母鸡数目,如果为整数,则符合条件,再算出小鸡x的数目,只要x、z都大于0就是组合
#include<stdio.h>

int main()
{
int x,y,z;
for(y=0;y<=20;y++)
{
if((100-7*y)%4==0)
{
z=(100-7*y)/4;
x=100-z-y;
if(z>=0 && x>=0)
printf("公鸡%d只,母鸡%d只,小鸡%d只\n",y,z,x);
}
}

return 0;
}
输出结果:
公鸡0只,母鸡25只,小鸡75只
公鸡4只,母鸡18只,小鸡78只
公鸡8只,母鸡11只,小鸡81只
公鸡12只,母鸡4只,小鸡84只
可以验证都符合要求
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-29
#include <stdio.h>
int main()
{
int i,j,k;
for (i = 0; i < 20; i++)
for (j = 0; j < 33; j++)
for (k = 0; k < 100; k++)
if (100 == 5*i + 3*j + k/3 && 0 == k%3 && 100 == j+i+k)
printf("公鸡%d,母鸡%d,小鸡%d\n",i,j,k);
return 0;
}
第2个回答  2011-10-27
#include <stdio.h>
int main()
{
int i,j,k;
for (i = 0; i < 20; i++)
for (j = 0; j < 33; j++)
for (k = 0; k < 100; k++)
if (100 == 5*i + 3*j + k/3 && 0 == k%3 && 100 == j+i+k)
printf("公鸡%d,母鸡%d,小鸡%d\n",i,j,k);
return 0;
}
相似回答