c语言程序设计答案 100元买100只鸡,公鸡5元一只,母鸡3元一只,小鸡1元3只,该怎么买???

如题所述

写个三重循环来寻找购买方案。

#include <stdio.h>

int main(void) {

int i,j,k,count=0;

for (i=1;i<=100/5;i++) /*公鸡*/
for (j=1;j<=100/3;j++) /*母鸡*/
for (k=1;k<=100*3;k++) /*小鸡*/
if (i*5+j*3+k==100 && i+j+k*3==100) {
count ++;
printf ("方案%d:%d只公鸡,%d只母鸡,%d只小鸡。\n",count,i,j,k*3);
printf ("100只鸡 = %d + %d + %d\n",i,j,k*3);
printf ("100元钱 = %d×5 + %d×3 + %d/3 = %d + %d + %d\n",i,j,k*3,i*5,j*3,k);
printf ("\n"); 
}
}

运行结果

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-06-23

使用穷举法。

C语言程序:

#include <stdio.h>

void main() {
int a, b, c;

printf("%6s%6s%6s\n", "公鸡", "母鸡", "小鸡");
for(a=0; a<=20; a++)
for(b=0; b<=33; b++)
for(c=0; c<=300; c+=3)
if(a+b+c==100 && 5*a+3*b+c/3==100)
printf("%6d%6d%6d\n", a, b, c);
}


运行结果:

第2个回答  2017-06-13
说我的想法,代码自己写……
1、简单粗爆的,直接3个FOR循环,变量(如a,b,c)代表三种鸡各自的数量,然后再判断结果(?5a+3b+c/3=100,如果是就打印出来。这样的话至少要循环1百万次。
2、也可以加点简单的判断,在循环之前,找出变量的范围。
5元一只的,只要大于20,3元的大于33只就没有意义了,而小鸡的数量,则必需为3的倍数
也就是相对减少了循环的次数。
3、或者,用两个FOR 循环,因为确定了两种鸡的数量,第三种也就确定了,这个时候再判断 是不是100元。再加上第二点减少了变量的范围,效率是更高一点。
第3个回答  推荐于2017-06-23
#include "iostream.h"
void main()
{
int chicken,hen,cock;
cout<<"chicken,hen,cock number= ";
cout<<endl;
for(chicken=0;chicken<=99;chicken+=3)
for(hen=0;hen<=33;hen++)
for(cock=0;cock<=20;cock++)
if(chicken/3+3*hen+5*cock==100)
if(chicken+hen+cock==100)
{
cout<<" chicken="<<chicken<<" hen="<<hen<<" cock="<<cock;
cout<<endl;
}

}本回答被网友采纳
第4个回答  2017-06-22

运用算法


相似回答