(HDOJ 2020)绝对值排序

绝对值排序

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

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

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

Sample Input
3 3 -4 2 
4 0 1 2 -3 
0
 

Sample Output
-4 3 2 
-3 2 1 0
 

 AC code:

#include<stdio.h>
#include
<math.h>
#include
<ctype.h>
#include
<string.h>
#include
<stdlib.h>
#define N 101

int cmp(const void *a,const void *b)
{
     
return (abs(*(int*)b)-abs(*(int*)a));
}

int main()
{
     
int n,m,i=0,j,t;
     
int a[N];
     
while((scanf("%d",&n)!=EOF)&&n)
     {
          t
=n;
          
while(n--)
          {
             scanf(
"%d",&m);
             a[i
++]=m;
          }
          qsort(a,t,
sizeof(a[0]),cmp);
          
for(j=0; j<t; j++)
          {
             
if(j!=t-1)
             {
                printf(
"%d ",a[j]);
             }
             
else
             {
                printf(
"%d\n",a[j]);
             }
          }
          memset(a,
0,sizeof(a));
          i
=0;
      }
     
return 0;

} 

作者:cpoint
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
原文地址:https://www.cnblogs.com/cpoint/p/2015354.html