| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 802 人关注过本帖
标题:求助一下,麻烦大神们看看是哪里有逻辑上的错误,题目是三个数由大到小输出
只看楼主 加入收藏
笑死555
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2014-8-6
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:10 
求助一下,麻烦大神们看看是哪里有逻辑上的错误,题目是三个数由大到小输出
题目:输入三个整数x,y,z,请把这三个数由小到大输出

我编写的代码:
#include<stdio.h>
int main(void)
{
    int x,y,z,t;
    printf("Please enter three integer:");
    scanf("%d %d %d",&x,&y,&z);
    if(x<y)
    {
        t=y;
        x=t;
        y=x;   
    }
    if(x<z)
    {
         t=z;
         x=t;
         z=x;
    }
     if(y<z)
    {
        t=z;
        y=t;
        z=y;
    }
    printf("这三个整数由大到小输出为%d %d %d\n",x,y,z);
   
    return 0;
}

没有编译上的错误,我输入 5,4,3没问题,是按照由大到小输出,可是我输入3,2,4就会输出4,4,4或4,2,4这类怪异的数
不太清楚是哪里不合理,请大神们指教一下,多谢!
搜索更多相关主题的帖子: include return 
2014-08-08 10:52
jsaf
Rank: 2
等 级:论坛游民
帖 子:7
专家分:12
注 册:2014-8-7
收藏
得分:2 
#include<stdio.h>
int main(void)
{
    int x,y,z,t;
    printf("Please enter three integer:");
    scanf("%d %d %d",&x,&y,&z);
    if(x<y)
    {
        t=y;
        y=x;
        x=t;
         
    }
    if(x<z)
    {
         t=z;
         z=x;
         x=t;
        
    }
     if(y<z)
    {
        t=z;
        z=y;
        y=t;
      
    }
    printf("这三个整数由大到小输出为%d %d %d\n",x,y,z);
   
    return 0;
}
2014-08-08 11:04
zhaoya881010
Rank: 9Rank: 9Rank: 9
来 自:芒砀古郡
等 级:蜘蛛侠
威 望:1
帖 子:339
专家分:1177
注 册:2010-11-21
收藏
得分:2 
程序代码:
#include<stdio.h>
int main(void)
{
    int x,y,z,t;
    printf("Please enter three integer:");
    scanf("%d %d %d",&x,&y,&z);
    if(x<y)
    {
        t=y;
y=x;
        x=t;
          

    }
    if(x<z)
    {
         t=z;
z=x;
         x=t;
        

    }
     if(y<z)
    {
        t=z;
z=y;
        y=t;
       

    }
    printf("这三个整数由大到小输出为%d %d %d\n",x,y,z);
  

    return 0;
}

Go Go Go
2014-08-08 11:09
笑死555
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2014-8-6
收藏
得分:0 
回复 2 楼 jsaf
谢谢大神,按照你的改完后能正确运行了,多谢指点!
2014-08-08 11:13
笑死555
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2014-8-6
收藏
得分:0 
回复 3 楼 zhaoya881010
谢谢大神
2014-08-08 11:14
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:2 


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

int main(void)
{
    int x = 0;
    int y = 0;
    int z = 0;
    printf("Please enter three integer:");
    scanf("%d%d%d", &x, &y, &z);
    printf("这三个整数由大到小输出为%d %d %d\n", (x>y?(x>z?x:z):(y>z?y:z)), (x>y?(x>z?(y>z?y:z):x):(y>z?(x>z?x:z):y)), (x<y?(x<z?x:z):(y<z?y:z)));

    return 0;
}

2014-08-08 13:21
zhaoya881010
Rank: 9Rank: 9Rank: 9
来 自:芒砀古郡
等 级:蜘蛛侠
威 望:1
帖 子:339
专家分:1177
注 册:2010-11-21
收藏
得分:0 
回复 6 楼 zklhp
搞这么风骚干嘛,公司严格上来说是不推崇你这种做法的,代码本着简洁 易懂的原则。

Go Go Go
2014-08-08 15:08
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:2 
仅仅就比较3个数据的话  是代码比较快  还是大脑反应快(肉眼直接判断)

DO IT YOURSELF !
2014-08-08 15:11
zhaoya881010
Rank: 9Rank: 9Rank: 9
来 自:芒砀古郡
等 级:蜘蛛侠
威 望:1
帖 子:339
专家分:1177
注 册:2010-11-21
收藏
得分:0 
回复 8 楼 wp231957
^_^ 灵活运用。

Go Go Go
2014-08-08 15:20
DavidCheung
Rank: 2
等 级:论坛游民
威 望:1
帖 子:14
专家分:35
注 册:2014-8-8
收藏
得分:2 
错在了两个数的交换上
交换两个数
正确的是
int temp;
temp=x;
x=y;
y=temp;
应该很容易看出规律:上一句的尾是下一句的头,并且第一句的头是最后一句的尾。
2014-08-08 16:33
快速回复:求助一下,麻烦大神们看看是哪里有逻辑上的错误,题目是三个数由大到小 ...
数据加载中...
 
   



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

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