| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 12497 人关注过本帖
标题:一百块铜钱买了100只鸡,其中公鸡一只5元,母鸡一只3元,小鸡一元3只,问一 ...
只看楼主 加入收藏
a853052879
Rank: 2
等 级:论坛游民
帖 子:39
专家分:10
注 册:2015-8-17
结帖率:60%
收藏
已结贴  问题点数:20 回复次数:10 
一百块铜钱买了100只鸡,其中公鸡一只5元,母鸡一只3元,小鸡一元3只,问一百只鸡中公鸡,母鸡,小鸡各多少只?
百钱白鸡问题:
#include "stdio.h"
void main()
{
int a,b,c;
for(a=0;a<=15;a++)
for(b=0;b<=25;b++)
for(c=66;c<=100;c+=3)
printf("a=%d,b=%d,c=%d\n",a,b,c);
}
这样算出来是四个答案,而如果将第三个for改为for(c=0;c<=100;c++);这样就有七个答案。为什么会这样?这两个for有什么区别?本人菜鸟一只,求大神解答
搜索更多相关主题的帖子: include 
2015-08-17 22:19
柳逸尘
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:80
专家分:131
注 册:2015-8-10
收藏
得分:5 
这个和你是不是菜鸟没有关系的  小鸡都是整的  一块3个小鸡  是以一块钱作为单位的  所以购买的小鸡必须是0或者是3的倍数。
2015-08-18 08:54
李掌柜
Rank: 6Rank: 6
等 级:侠之大者
帖 子:94
专家分:406
注 册:2015-6-18
收藏
得分:5 
代码的本身就有问题,没有判断“一百块钱买一百只鸡”这个条件语句,楼主的公鸡母鸡和小鸡的数量是怎么得来的?

照片是可以做成小游戏的,快来私聊我吧!
2015-08-18 09:01
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:5 
这样算出来是四个答案
------ 你拷贝运行一下,根本不是四个答案

已知
5*a + 3*b + 1/3*c = 100
a + b + c = 100;
解得
b = 25 - 7/4*a

程序代码:
#include <stdio.h>

int main( void )
{
    // b = 25 - 7*a/4
    // c = 100 - a - b
    for( unsigned a=0; a<=25*4/7; a+=4 )
    {
        unsigned b = 25 - 7*a/4;
        unsigned c = 100 - a - b;
        printf( "a=%u, b=%u, c=%u\n", a, b, c );
    }

    return 0;
}
输出
a=0, b=25, c=75
a=4, b=18, c=78
a=8, b=11, c=81
a=12, b=4, c=84


收到的鲜花
  • a8530528792015-08-18 19:12 送鲜花  1朵   附言:原创内容
2015-08-18 09:03
a853052879
Rank: 2
等 级:论坛游民
帖 子:39
专家分:10
注 册:2015-8-17
收藏
得分:0 
回复 3楼 李掌柜
其实这样也可以的:for(a=0;a<=20;a++)
                  for(b=0;b<=33;b++)
                  for(c=0;c<=300;c+=3)
这样更好理解,这样运行答案也是一样的

清风无泪
2015-08-18 09:42
a853052879
Rank: 2
等 级:论坛游民
帖 子:39
专家分:10
注 册:2015-8-17
收藏
得分:0 
回复 3楼 李掌柜
是的,我忘记加if(a+b+c==100&&5*a+3*b+c/3==100)这个语句了.....

清风无泪
2015-08-18 09:49
a853052879
Rank: 2
等 级:论坛游民
帖 子:39
专家分:10
注 册:2015-8-17
收藏
得分:0 
回复 4楼 rjsp
对呀,是这个结果呀,我忘记加
if(a+b+c==100&&5*a+3*b+c/3==100)这个语句了,算出来也是一样的结果

清风无泪
2015-08-18 09:51
calix
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:28
帖 子:249
专家分:1442
注 册:2015-5-4
收藏
得分:5 
转换成int类型时,75/3 == 76/3 == 77/3 = 25,
后面的76和77不是3的倍数,但同样会使5*a+3*b+c/3==100成立,导致结果变多
2015-08-18 12:19
安吉底肥
Rank: 1
等 级:新手上路
帖 子:3
专家分:3
注 册:2015-8-18
收藏
得分:0 
因为你后面的for的范围比你前面for的范围大
2015-08-18 15:16
a853052879
Rank: 2
等 级:论坛游民
帖 子:39
专家分:10
注 册:2015-8-17
收藏
得分:0 
回复 8楼 calix
但是把for(c=0;c<=100;c++)改为for(c=0;c<=100;c+=3)答案又变回四个了

清风无泪
2015-08-18 15:40
快速回复:一百块铜钱买了100只鸡,其中公鸡一只5元,母鸡一只3元,小鸡一元3只, ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.074560 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved