| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1263 人关注过本帖
标题:大神帮我看看,这段if语句哪儿的逻辑错了?
只看楼主 加入收藏
C初见
Rank: 2
来 自:四川
等 级:论坛游民
帖 子:61
专家分:52
注 册:2017-1-7
结帖率:91.67%
收藏
 问题点数:0 回复次数:8 
大神帮我看看,这段if语句哪儿的逻辑错了?
/*    p112页第四习题
    有三个整数a,b,c,由键盘输入,输出其中最大数.
*/

# include <stdio.h>

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

    printf ("请输入三个整数:");
    scanf ("%d %d %d", &a, &b, &c);        //输入整数abc
   
    if (a < b)
        {
            t = a;
            a = b;
            b = t;
        }
    else if (a < c)
        {
            t = a;
            a = c;
            c = t;
        }
    else if (b < c)
        {
            t = b;
            b = c;
            c = t;
        }

    printf("a,b,c中的最大数为:%d\n", a);            //输出最大数a


    return 0;
}
搜索更多相关主题的帖子: 键盘 include 
2017-01-23 13:08
C初见
Rank: 2
来 自:四川
等 级:论坛游民
帖 子:61
专家分:52
注 册:2017-1-7
收藏
得分:0 
运行中 b和c好像没有比较
图片附件: 游客没有浏览图片的权限,请 登录注册
2017-01-23 13:09
C初见
Rank: 2
来 自:四川
等 级:论坛游民
帖 子:61
专家分:52
注 册:2017-1-7
收藏
得分:0 
为什么不要else就正确了呢?
2017-01-23 13:29
C初见
Rank: 2
来 自:四川
等 级:论坛游民
帖 子:61
专家分:52
注 册:2017-1-7
收藏
得分:0 
我明白了,如果加了else则不执行之后的语句了
2017-01-23 13:35
kin3z
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:157
专家分:390
注 册:2011-4-24
收藏
得分:0 
你用错了if和else if了
直接去掉else,直接单独3个if就可以了

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

int main(void)
{
    int a = 123 , b = 234 , c = 345 , t = 0;

//    printf ("请输入三个整数:");
//    scanf ("%d %d %d", &a, &b, &c);        //输入整数abc
    
    if (a < b)     //如果a < b则执行下面,要a > b才执行 if(a < c)
        {
            t = a;
            a = b;
            b = t;
        }
    else if (a < c)    //如果 a > b 的情况下 ,才去判断是否 a < c 
        {
            t = a;
            a = c;
            c = t;
        }
    else if (b < c)    //同上,在 a>b 与 a>c 的情况下,才去判断是否 b<c
        {
            t = b;
            b = c;
            c = t;
        }

//因此,按照楼上推断,在第一个if已经成立了,下面的else没有必要执行了。。。。也就只有a和b的交换操作


    printf("a,b,c中的最大数为:%d\n", a);            //输出最大数a


    return 0;
}


2017-01-23 13:37
悬崖之树
Rank: 2
等 级:论坛游民
威 望:1
帖 子:36
专家分:23
注 册:2013-5-1
收藏
得分:0 
程序代码:
# include <stdio.h>

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

    printf ("请输入三个整数:");
    scanf ("%d %d %d", &a, &b, &c);        //输入整数abc
    
    if (a <= b) {
        a = b;
    }
    if (a <= c) {
        a = c;
    }
    



    printf("a,b,c中的最大数为:%d\n", a);            //输出最大数a


    return 0;
}
2017-01-23 13:41
悬崖之树
Rank: 2
等 级:论坛游民
威 望:1
帖 子:36
专家分:23
注 册:2013-5-1
收藏
得分:0 
程序代码:
# include <stdio.h>

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

    printf ("请输入三个整数:");
    scanf ("%d %d %d", &a, &b, &c);        //输入整数abc
    printf("a,b,c中的最大数为:%d\n", ( a >= b ? a : b ) >= c ? ( a >= b ? a : b ) : c);            //输出最大数a


    return 0;
}
2017-01-23 13:51
kin3z
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:157
专家分:390
注 册:2011-4-24
收藏
得分:0 
回复 7楼 悬崖之树
它那个程序还带排序功能,其实就是针对3个元素的冒泡算法。
因此第三个if是有作用的。
2017-01-23 14:02
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
简单版的冒泡法排序~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-01-23 14:29
快速回复:大神帮我看看,这段if语句哪儿的逻辑错了?
数据加载中...
 
   



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

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