题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2020
题目大意:输入数据有多组,每组占一行,每行的第一个数字为n,接着是n个整数,n=0表示输入数据的结束,不做处理。对于每个测试
实例,输出排序后的结果,两个数之间用一个空格隔开。每个测试实例占一行 。
这个题目的关键是提供的数据中会出现负数,求出负数绝对值进行比较之后,按照绝对值大小输出的数必须是原来的数据。为了解
决这个问题我利用了sort排序函数和abs函数(绝对值进行比较)。
代码如下:
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a,int b)
{
return abs(a)>abs(b);//abs()绝对值进行比较,比较大小
}
int main()
{
int n,i,s[100];
while(cin>>n&&n!=0)
{
for(i=0;i<n;i++)
{
cin>>s[i];
}
sort(s,s+n,cmp);//sort排序
for(i=0;i<n;i++)
{
if(i<n-1) cout<<s[i]<<" ";
else cout<<s[i]<<endl;
}
}
return 0;