蓝桥杯 绝对值排序

题目 1169: 绝对值排序
时间限制: 1Sec 内存限制: 128MB 提交: 4020 解决: 1494

题目描述
输入n(n<=100)个整数,按照绝对值从大到小排序后输出。题目保证对于每一个测试实例,所有的数的绝对值都不相等。

输入
输入数据有多组,每组占一行,每行的第一个数字为n,接着是n个整数,n=0表示输入数据的结束,不做处理。

输出
对于每个测试实例,输出排序后的结果,两个数之间用一个空格隔开。每个测试实例占一行

样例输入
3 3 -4 2
4 0 1 2 -3
0
样例输出
-4 3 2
-3 2 1 0

#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
    
    
    int str[100][100];
    int sta[100];
    int xb=1;
    int h;
    for(h=0;xb!=0;h++)
    {
    
    
         int cns=-1;
         while(scanf("%d",&str[h][++cns])!=EOF);
         sta[h]=cns;
         xb=str[h][0];
    }
    for(int k=0;k<h-1;k++)
    {
    
    
       int cns=0;
       cns=sta[k];
    for(int i=0;i<cns;i++)
    {
    
    
        for(int j=i+1;j<cns;j++)
        {
    
    
            int a,b;
            a=fabs(str[k][i]);
            b=fabs(str[k][j]);
            if(a<b)
            {
    
    
                swap(str[k][i],str[k][j]);
            }
        }   
    }
    for(int i=0;i<cns;i++)
    {
    
    
        if(str[k][i]==str[k][i-1])
        {
    
    
            continue;
        }
        cout<<str[k][i]<<" ";
     } 
     cout<<endl;
     
    }

     return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_46232829/article/details/108287969