输入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<stdio.h>
#include<math.h>
int main()
{
int n,m;
while(~scanf("%d",&n)&&n) //多组输入且输入0时结束
{
int a[n];
int i,j,t;
for(i=0; i<n; i++)
scanf("%d",&a[i]);
for(j=0; j<n-1; j++) //冒泡排序核心代码
for(i=0; i<n-1-j; i++)
if(fabs(a[i])<fabs(a[i+1]))
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
for(i=0;i<n-1;i++) //输出控制格式
printf("%d ",a[i]);
for(i=n-1;i<n;i++)
printf("%d",a[i]);
printf("\n");
}
return 0;
}