三个整数的排序

#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;
 } 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值