
c语言解决百钱买鸡问题
钱买百鸡”鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?#include<stdio.h>voidmain(){intcocks,hen...
钱买百鸡”鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?
#include <stdio.h>
void main()
{
int cocks,hens,chicks,n=0;
while(n<=33)
{
chicks=3*n;
hens=0;
while(hens<=33)
{
cocks=100-hens-chicks;
if(5*cocks+3*hens+n==100&&cocks>=0)
printf("%d %d %d\n",cocks,hens,chicks);
hens++;
}
n++;
}
}
这个程序看不明白,哪位大侠能够解释一下。或者用你自己的程序也行 展开
#include <stdio.h>
void main()
{
int cocks,hens,chicks,n=0;
while(n<=33)
{
chicks=3*n;
hens=0;
while(hens<=33)
{
cocks=100-hens-chicks;
if(5*cocks+3*hens+n==100&&cocks>=0)
printf("%d %d %d\n",cocks,hens,chicks);
hens++;
}
n++;
}
}
这个程序看不明白,哪位大侠能够解释一下。或者用你自己的程序也行 展开
5个回答
展开全部
chicks小鸡,cocks公鸡,hens
n是钱,因为1钱可买3小鸡,所以小鸡数对应钱数就是:chicks=3*n
外层遍历:买小鸡的钱,从0遍历到33(33块就99个小鸡了,明显用不了这么多,但作者为了保险吧)
内层遍历:买母鸡的个数,从0遍历到33个(33个母鸡也99块,与上面意图相同,尽量遍历到境界点,虽然有点不科学,但如果问题有解,在条件成立时加个跳出,也不碍事)
内层遍历的时候:cocks=100-hens-chicks; 公鸡=100-母鸡-小鸡,(确保三种鸡加起来是100)
if(5*cocks+3*hens+n==100&&cocks>=0) 意思是:所有的钱加起来是100并且公鸡个数不为负数
printf("%d %d %d\n",cocks,hens,chicks); //打完收工
hens++;//自增
}
n++;//自增
n是钱,因为1钱可买3小鸡,所以小鸡数对应钱数就是:chicks=3*n
外层遍历:买小鸡的钱,从0遍历到33(33块就99个小鸡了,明显用不了这么多,但作者为了保险吧)
内层遍历:买母鸡的个数,从0遍历到33个(33个母鸡也99块,与上面意图相同,尽量遍历到境界点,虽然有点不科学,但如果问题有解,在条件成立时加个跳出,也不碍事)
内层遍历的时候:cocks=100-hens-chicks; 公鸡=100-母鸡-小鸡,(确保三种鸡加起来是100)
if(5*cocks+3*hens+n==100&&cocks>=0) 意思是:所有的钱加起来是100并且公鸡个数不为负数
printf("%d %d %d\n",cocks,hens,chicks); //打完收工
hens++;//自增
}
n++;//自增
展开全部
一句话,买所有鸡的钱加起来不能超过一百 if(5*cocks+3*hens+n==100&&cocks>=0)
这道题还没有要求是公鸡母鸡小鸡都要有,还算简单
这道题还没有要求是公鸡母鸡小鸡都要有,还算简单
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
设a,b,100-a-b,分别代表三种鸡,然后a从0到20循环,其间b也循环,对应求出100-a-b
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
cocks,hens,chicks代表数量,if语句表示价钱满足成立,cocks=100-hens-chicks; 表示满足总量100.
追问
为什么要n<=33
追答
当n大于33,则雏鸡大于100了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
void main()
{
int cocks,hens,chicks,i,j,k;
for(cocks=1;cocks<=20;cocks++)
for(hens=1;hens<=33;hens++)
for(chicks=1;chicks<=100;chicks++)
if(cocks+hens+chicks==100)
{
i=cocks;
j=hens;
k=chicks;
}
printf("cocks有%d个 hens有%d个 chicks有%d个",i,j,k);
}
这是循环嵌套,运行时间较长,但最好懂
void main()
{
int cocks,hens,chicks,i,j,k;
for(cocks=1;cocks<=20;cocks++)
for(hens=1;hens<=33;hens++)
for(chicks=1;chicks<=100;chicks++)
if(cocks+hens+chicks==100)
{
i=cocks;
j=hens;
k=chicks;
}
printf("cocks有%d个 hens有%d个 chicks有%d个",i,j,k);
}
这是循环嵌套,运行时间较长,但最好懂
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询