比较2

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

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

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

时间: 2024-10-01 20:49:11