题目 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;
}