題目描述 對N個長度最長可達到1000的數進行排序。 輸入 輸入第一行為一個整數N,(1<=N<=100)。 接下來的N行每行有一個數,數的長度范圍為1<=len<=1000。 每個數都是一個正數,並且保證不包含前綴零。 輸出 可能有多組測試數據,對於每組數據,將給出的N個數從小到大進行排序,輸出排序後的結果,每個數占一行。 樣例輸入 4 123 1234 12345 2345 樣例輸出 123 1234 2345 12345 提示 [+] *** 提示已隱藏,點擊上方 [+] 可顯示 *** 來源 2006年華中科技大學計算機研究生機試真題 [cpp] /********************************* * 日期:2013-2-21 * 作者:SJF0115 * 題號: 天勤OJ 題目1141: 大整數排序 * 來源:http://acmclub.com/problem.php?id=1141 * 結果:AC * 來源:2006年華中科技大學計算機研究生機試真題 * 總結: **********************************/ #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct Integer{ int len;//長度 char N[1001];//數字 }Integer; //排序函數 int cmp(const void *a,const void *b){ struct Integer *c = (Integer *)a; struct Integer *d = (Integer *)b; if(c->len != d->len){ return c->len - d->len; } else{ return strcmp(c->N,d->N); } } int main() { int n,i; Integer array[101]; while(scanf("%d",&n) != EOF){ //輸入 for(i = 0;i < n;i++){ scanf("%s",array[i].N); array[i].len = strlen(array[i].N); } //排序 qsort(array,n,sizeof(array[0]),cmp); //輸出 for(i = 0;i < n;i++){ printf("%s\n",array[i].N); } } return 0; } /********************************* * 日期:2013-2-21 * 作者:SJF0115 * 題號: 天勤OJ 題目1141: 大整數排序 * 來源:http://acmclub.com/problem.php?id=1141 * 結果:AC * 來源:2006年華中科技大學計算機研究生機試真題 * 總結: **********************************/ #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct Integer{ int len;//長度 char N[1001];//數字 }Integer; //排序函數 int cmp(const void *a,const void *b){ struct Integer *c = (Integer *)a; struct Integer *d = (Integer *)b; if(c->len != d->len){ return c->len - d->len; } else{ return strcmp(c->N,d->N); } } int main() { int n,i; Integer array[101]; while(scanf("%d",&n) != EOF){ //輸入 for(i = 0;i < n;i++){ scanf("%s",array[i].N); array[i].len = strlen(array[i].N); } www.2cto.com //排序 qsort(array,n,sizeof(array[0]),cmp); //輸出 for(i = 0;i < n;i++){ printf("%s\n",array[i].N); } } return 0; }