| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1146 人关注过本帖
标题:四個數字排序問題(從大到小)﹐怎么編譯的程序有的成立﹐有的卻不成立﹐請 ...
只看楼主 加入收藏
a476644693
Rank: 2
等 级:论坛游民
帖 子:31
专家分:29
注 册:2011-8-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
四個數字排序問題(從大到小)﹐怎么編譯的程序有的成立﹐有的卻不成立﹐請高手指教﹐幫忙看哪里有問題?
程序代码:
#include <stdio.h>
void main()
{ int a,b,c,d;
  printf("Please input four number:");
  scanf("%d%d%d%d",&a,&b,&c,&d);
  printf("a b c d從大到小的順序為:");
  if(a>=b&&a>=c)
   { if(d>=a)
      {if(b>=c) printf("%d %d %d %d",d,a,b,c);
       else     printf("%d %d %d %d",d,a,c,b);
       }
    else if(b>d&&c>d)
      {if(b>=c) printf("%d %d %d %d",a,b,c,d);
       else     printf("%d %d %d %d",a,c,b,d);
       }
    else
      {if(b>=c) printf("%d %d %d %d",a,d,b,c);
       else     printf("%d %d %d %d",a,d,c,b);
       }
    }
  else
    { if(d>b&&d>c)
        {if(b>=c)  printf("%d %d %d %d",d,b,c,a);
         else      printf("%d %d %d %d",d,c,b,a);
         }
       else if(a>d)
         {if(b>=c)  printf("%d %d %d %d",b,c,a,d);
          else       printf("%d %d %d %d",c,b,a,d);
         }
       else
         {if(b>=c)  printf("%d %d %d %d",b,c,d,a);
          else      printf("%d %d %d %d",c,b,d,a);
         }
      }
    getch();
}
如題﹕
  比如輸入﹕7 8 9 10    結果為﹕10 9 8 7
  但輸入﹕98 89 78 87   結果卻為﹕98 87 89 78(結果出錯)
PS﹕我測試了很多組數據﹐大部分是對的﹐但有少部分結果出錯﹐請高手幫忙指教﹗(我剛學到IF嵌套﹐后面的還沒學﹐指針還不了解﹐就用IF else能把問題解決嗎?)
搜索更多相关主题的帖子: 成立 
2011-08-11 06:59
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:5 
int a[4],i,j;
for(i=0;i<4;i++)
scanf("%d",&a[i]);
for(i=0;i<4;i++)
for(j=i;j<4;j++)
if(a[i]<a[j])
{int t=a[i];
a[i]=a[j];
a[j]=t;
}
for(i=0;i<4;i++)
printf("%d ",a[i]);
2011-08-11 07:45
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
如果我有100个数楼主也要这样写排序嘛

                                         
===========深入<----------------->浅出============
2011-08-11 09:15
a476644693
Rank: 2
等 级:论坛游民
帖 子:31
专家分:29
注 册:2011-8-2
收藏
得分:0 
  楼上的大哥我才学不久啊,书上列举三个数排序,我就想举一反三弄四个数试试,
这不遇到问题求助来了,后面的内容还没学到呢?慢慢来!
  PS:为什么有的行,有的却不行,郁闷....
2011-08-11 11:45
a476644693
Rank: 2
等 级:论坛游民
帖 子:31
专家分:29
注 册:2011-8-2
收藏
得分:0 
2楼的,"[]"这个是什么啊,难学不?
2011-08-11 11:48
韩54521风
Rank: 4
等 级:业余侠客
帖 子:75
专家分:212
注 册:2011-6-11
收藏
得分:15 
楼主看来没有把所有的知识点浏览一边啊!2楼的,不是"[]"而是a[4],是数组,回去好好看看吧!
就我的理解解释一下你的疑惑:
书上列举三个数排序,我就想举一反三弄四个数试试,
这不遇到问题求助来了,后面的内容还没学到呢?
你的意思是现在还不能就for循环和数组解决,也就是想更深一步的理解if,else
  if(a>=b&&a>=c)----------------------------------------------------------------------------------------
   { if(d>=a)
      {if(b>=c) printf("%d %d %d %d",d,a,b,c);
       else     printf("%d %d %d %d",d,a,c,b);                    这一部分还是蛮有条理的
       }
    else if(b>d&&c>d)
      {if(b>=c) printf("%d %d %d %d",a,b,c,d);
       else     printf("%d %d %d %d",a,c,b,d);
       }
    else
      {if(b>=c) printf("%d %d %d %d",a,d,b,c);
       else     printf("%d %d %d %d",a,d,c,b);
       }
    }-------------------------------------------------------------------------------------------------

问题出现在下面这段上
  else
    { if(d>b&&d>c)
        {if(b>=c)  printf("%d %d %d %d",d,b,c,a);
         else      printf("%d %d %d %d",d,c,b,a);
         }
       else if(a>d)
         {if(b>=c)  printf("%d %d %d %d",b,c,a,d);
          else       printf("%d %d %d %d",c,b,a,d);
         }
       else
         {if(b>=c)  printf("%d %d %d %d",b,c,d,a);
          else      printf("%d %d %d %d",c,b,d,a);
         }
      }
这是的else是相对于if(a>=b&&a>=c),但是你就把情况想的太简单了,要知道,三个数排列情况有六种,用if和else还是可以的,但是
四个数的时候有了24种情况,这个时候再用if和else就显得要麻烦的多了,就拿你程序来说吧,中间只出现的12种情况,所以程序是错的

至于有的可以有的不可以,主要是因为,你输入的数如果在你列出的12种情况内,就可以正确输出,不在这十二种情况下的时候就不对了。
如a在最前边的时候,你出现过a,b,c,d     a,c,b,d      a,d,b,c      a,d,c,b 但是a,b,d,c     a,c,d,b等情况就没有出现,你想到这些就相当不错了,继续努力吧!  
2011-08-12 22:10
a476644693
Rank: 2
等 级:论坛游民
帖 子:31
专家分:29
注 册:2011-8-2
收藏
得分:0 
恩﹐樓上的說的很對﹐我疏忽了﹐按照排列A44=24﹐感謝你的回答﹐我會繼續努力的﹗
2011-08-14 04:23
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
四个数排序,不用循环也没这么复杂的。

授人以渔,不授人以鱼。
2011-08-14 04:40
快速回复:四個數字排序問題(從大到小)﹐怎么編譯的程序有的成立﹐有的卻不成立 ...
数据加载中...
 
   



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

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