回复 23楼 御坂美琴
拜读中。。。
----------------------------------------------------
你的程序的确是正解,也理解了你的关键解题逻辑了,呵呵 学习了!!
----------------------------------------------------
分数不是问题,我在这里也贴出我的代码,大家帮忙测试下,看有疏漏没??
(我用递归实现比较,有些笨...并且主函数也懒得写,借用了别人的)
程序代码:
#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;
}
PS:为了使结果具有直观的可读性,我在输出的每个串尾加了个空白符,方便大家判断结果的正确与否!
[
本帖最后由 jack10141 于 2010-9-4 23:29 编辑 ]