三个整数的排序

来源:互联网 发布:淘宝hd注销后无法登陆 编辑:程序博客网 时间:2024/05/18 03:01
#include <stdio.h>
int main()
{   
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
   if(a<=b&&b<=c)          printf("%d %d %d\n",a,b,c);
   else if(a<=c&&c<=b) printf("%d %d %d\n",a,c,b);
   else if(b<=a&&a<=c) printf("%d %d %d\n",b,a,c); 
   else if(b<=a&&c<=a) printf("%d %d %d\n",b,c,a);
   else if(c<=a&&a<=b) printf("%d %d %d\n",c,a,b);
   else if(c<=a&&b<=a)        printf("%d %d %d\n",c,b,a);
return 0;
 } 

对于三个数的大小比较,对初学者来说是特别容易出错的,可能就是6个if语句就以为解决了,而最后的答案却大相径庭。所以我们在思考问题的时候应该理清思路,站在算法的角度上来考虑问题。

以上的一段代码是用的一个if加上5个else if组成的,当第一个判断语句不符合则会跳入下一个判断语句,一直到符合或者代码结束。这里再介绍一种初学者很难想到的方法:

#include <stdio.h>
int main()
{   
    int a,b,c,t;
    scanf("%d%d%d",&a,&b,&c);
    if(a>b){t=a;a=b;b=t;}
    if(a>c){t=a;a=c;c=t;}
    if(b>c){t=b;b=c;c=t;}
    printf("%d %d %d",a,b,c);
return 0;
 } 

这里是通过增加了一个中间变量,本人觉得这种方法更直观,也很巧妙。

0 0
原创粉丝点击