题目:
代码:
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<stdlib.h>
using namespace std;
struct st
{
int num;
int origin;
}b[1000];
bool cmp(st a,st b)
{
return a.num>b.num;
}
int main()
{
int n,a[1000],i;
while(~scanf("%d",&n))
{
if(n==0)
return 0;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
b[i].origin=a[i];
if(a[i]<0)
{
b[i].num=0-a[i];
}
else
{
b[i].num=a[i];
}
}
sort(b,b+n,cmp);
for(i=0;i<n;i++)
{
if(i!=0)
printf(" ");
printf("%d",b[i].origin);
}
printf("\n");
}
return 0;
}
注意:此题为结构体排序 对 绝对值数列的排序的典型题目!!!