1. 程式人生 > >C語言網——絕對值排序

C語言網——絕對值排序

問題 1169: 【絕對值排序】

時間限制: 1Sec 記憶體限制: 128MB 提交: 641 解決: 221

題目描述

輸入n(n<=100)個整數,按照絕對值從大到小排序後輸出。題目保證對於每一個測試例項,所有的數的絕對值都不相等。

輸入

輸入資料有多組,每組佔一行,每行的第一個數字為n,接著是n個整數,n=0表示輸入資料的結束,不做處理。

輸出

對於每個測試例項,輸出排序後的結果,兩個數之間用一個空格隔開。每個測試例項佔一行

樣例輸入
3 3 -4 2
4 0 1 2 -3
0
樣例輸出
-4 3 2
-3 2 1 0

還是水題,,這資料有問題,題目說0不處理,所以所以相當然是以為0是資料結尾,結果輸出超限,還要加上一個到達檔案結尾的判斷條件

AC程式碼:

#include<stdio.h>
#include<math.h>

int main()
{
	int n;
	int i;
	int j;
	int t;
	int a[202];
	 while(scanf("%d",&n)!=EOF){
	 	if(n==0){
	 		break;
	 	}
	 	for(i=0;i<n;i++){
	 		scanf("%d",&a[i]);
	 	}
	 	for(i=0;i<n-1;i++){
	 		for(j=i+1;j<n;j++){
	 			if(fabs(a[i])<fabs(a[j])){
	 				t=a[i];
	 				a[i]=a[j];
	 				a[j]=t;
	 			}
	 		}
	 	}
	 	for(i=0;i<n-1;i++){
	 		printf("%d ",a[i]);
	 	}
	 	printf("%d\n",a[i]);
	 }
	 return 0;
}