比较2

本文介绍了一种使用C语言实现的简单算法,该算法能够将三个整数按照它们的绝对值从小到大进行排序,当绝对值相同时,则按实际数值从小到大排序。通过使用循环和条件判断,此算法有效地实现了所需的排序逻辑。

题目:给你三个数,请你按绝对值从小到大排序,对于绝对值相同的,请再 按照值由小到大排序

 

  1.    
  2.                         #include<stdio.h>    
  3. #include<math.h>    

 

  1. void swap(int &x,int &y){      //重点在于swap 的运用
  2.      int t=x;x=y;y=t;    
  3.      }    
  4.     
  5.  int main(){    
  6.          int a[3];    
  7.          scanf("%d %d %d",&a[0],&a[1],&a[2]);     
  8.          for (int i=0;i<=2;++i){        //之所以用循环是为了减小代码量  类似于起泡法  a[0]与a[1],a[2]先比  然后 a[1 ]再与a[2]比
  9.              for (int j=i+1;j<=2;++j){                                掌握起泡法 一个个比较下去,起到排序作用
  10.                  if (fabs(a[j])<=fabs(a[i])){      
  11.                     if(fabs(a[j])==fabs(a[i])){    //在绝对值相等的情况下考虑 原值
  12.                        if (a[j]<a[i]) swap(a[i],a[j]);     
  13.                        }else swap(a[j],a[i]);    
  14.                        };    
    1. ///看似少了一个else ,其实没差 else所代表的条件就是我们所需要的排序  因为我们为的是排序 
  15.                        };    
  16.                        };    
  17.                        printf("%d %d %d",a[0],a[1],a[2]);     
  18.                        return 0;    
  19.                        }      

 

本题在于寻找主次,先对绝对值大小排序很明显是主,如果出现绝对值大小相等这一特殊情况再讨论就是了

转载于:https://www.cnblogs.com/wshyj/p/5983246.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值