| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 624 人关注过本帖
标题:百钱买百鸡,关于else语句的问题
只看楼主 加入收藏
安宁1991
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:76
专家分:123
注 册:2014-4-3
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:11 
百钱买百鸡,关于else语句的问题
这是参考百度后写出来的代码,虽然刚开始有点不理解,尤其是看不懂算法。一个人琢磨了好久终于弄懂了,把代码写了注释,请各位前辈看看理解的对不对。本人数学不大好,能有这进步还算是满意了。请大家不要取笑,呵呵。
#include<stdio.h>
int main()
{
    int x,y,z;//设:公鸡个数为x只,母鸡个数为y只,买小鸡花的钱为z
    for(x=0;x<20;x++)
    for(y=0;y<33;y++)
    for(z=0;z<33;z++)//因为x+y+z个数为100,买三者花的钱总数也为100,所以z<33,也就是小鸡数量不能超于100
    if((5*x+3*y+z==100)&&(x+y+3*z==100))//买小鸡花钱总数为Z,个数=总价/每只小鸡的单价,小鸡单价为1/3,所以个数为z*3
    {
        printf("公鸡为%d只, 母鸡为%d只,小鸡为%d只\n",x,y,3*z);
    }
    return 0;
}
另外为什么在if语句后面添加else分支时,程序跳过if语句,直接就执行else分支的语句呢?而且是输出的内容不断循环,直到循环结束。请大家知道的解答下?感激不尽!还打算明天重新写一个算法,困了,先睡觉。
搜索更多相关主题的帖子: include 百度 数学 
2014-04-04 00:01
安宁1991
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:76
专家分:123
注 册:2014-4-3
收藏
得分:0 
另外,我发现把x,y,z在for循环里的条件改成小于100,if语句里面的条件不变,程序也能得出正确的结果。。现在懵了,不知道怎么回事。。求教啊。

因为有你,所以做什么都有动力。z,爱你。
2014-04-04 00:26
夏时雨
Rank: 2
等 级:论坛游民
帖 子:45
专家分:75
注 册:2013-10-11
收藏
得分:3 
改成一百也会跑到到正确的答案,就像你从一数到十必然会数到五一样。改成一百只是让程序跑多几趟,时间花久点,当然对这些小程序来说这点时间不算什么。另外,你的算法算是理解了,欠缺的只是对c语言的熟悉,多研究下课本,写多几个程序练练手就行。

人生若只如初见
何事秋风悲画扇
2014-04-04 00:40
fl8962
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:539
专家分:2471
注 册:2012-10-17
收藏
得分:3 
lou zhu wei wu.

想抽苏烟了。
2014-04-04 00:58
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:3 
可以只用二重循环:
#include <stdio.h>
int main()
{
    int x,y,z;//设:公鸡个数为x只,母鸡个数为y只,小鸡为z只
    for(x=0;x<20;x++)
    for(y=0;y<33;y++)
    {
        z=100-x-y;
        if( z%3==0 && (5*x+3*y+z/3==100))
               printf("公鸡为%d只, 母鸡为%d只,小鸡为%d只\n",x,y,z);
     }
    return 0;
}
2014-04-04 06:43
安宁1991
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:76
专家分:123
注 册:2014-4-3
收藏
得分:0 
回复 3楼 夏时雨
多谢前辈指教。对啦,这个for循环具体是怎么执行的?我虽然会写出来了,但是原理还是不懂。知道怎么写,但是不知道具体是怎么执行的?是先执行完第一条循环语句后,直接执行第二条语句继续判断呢还是跳转到if语句里面进行判断后再执行第二条for循环语句的?

因为有你,所以做什么都有动力。z,爱你。
2014-04-04 09:22
安宁1991
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:76
专家分:123
注 册:2014-4-3
收藏
得分:0 
回复 5楼 ying8501
前辈,前面我能看懂,if里的条件为什么要z%3==0呢?我知道这是求余,可是不懂为什么要这样啊?能不能注释下?谢谢!

因为有你,所以做什么都有动力。z,爱你。
2014-04-04 09:27
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:3 
z%3==0 就是说 z是3的整数倍

DO IT YOURSELF !
2014-04-04 09:37
loveClangage
Rank: 8Rank: 8
来 自:广东云浮
等 级:蝙蝠侠
帖 子:326
专家分:891
注 册:2013-8-23
收藏
得分:0 
分别试出每一种符合要求的情况,

编写的程序,不能改变世界,却可以改变自己...
2014-04-04 09:51
安宁1991
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:76
专家分:123
注 册:2014-4-3
收藏
得分:0 
回复 8楼 wp231957
谢谢!明白了

因为有你,所以做什么都有动力。z,爱你。
2014-04-04 09:53
快速回复:百钱买百鸡,关于else语句的问题
数据加载中...
 
   



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

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