程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 天勤OJ 題目1141: 大整數排序

天勤OJ 題目1141: 大整數排序

編輯:C++入門知識

題目描述 對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; }    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved