回复 18楼 maotai
这组数据,你测试下:输入:
3
314
3143
31431
你的程序输出:
314314331431
Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
#include <stdio.h> #include <stdlib.h> #include <string.h> int NUM_comp(char *q,char *p) { int i=0; while(*(q+i) != '\0' && *(p+i) != '\0' && *(q+i) == *(p+i))i++; if( *(q+i) != '\0' && *(p+i) != '\0' && *(q+i) != *(p+i) ) return (-(*(q+i)-*(p+i))); if( *(q+i) == '\0' && *(p+i) != '\0' ) return NUM_comp((char *)q, (char *)(p+i)); if( *(q+i) != '\0' && *(p+i) == '\0' ) return NUM_comp((char *)(q+i),(char *)p); if( *(q+i) == '\0' && *(p+i) == '\0' ) return 0; } int main() { int n, i; char s[1000][11]; while (scanf("%d", &n) != EOF) { for (i = 0; i < n; ++i) scanf("%s", s[i]); qsort(s, n, sizeof(s[0]), NUM_comp); for (i = 0; i < n; ++i) printf("%s ", s[i]); } return 0; }