c语言 单词先按长度排序再按字母表排序

c语言 把所有的单词按照从短到长排序,若两个单词一样长,就从第一个字母开始从a~z的顺序排序。

输入
测试数据有多组,每组数据第一行是一个整数n(1<=n<=50),接下来是n行,每行有一个全部为小写字母的单词,单词的长度i为1<=i<=12。

输出
每组测试数据,每行一个单词,输出按照要求排好序的单词。

第1个回答  2022-06-12
用两次冒泡排序,
第一次先排序长度,
第二次排序时,只有在两个字符串长度相等的情况下,再进行字典序排序。
代码如下:
for (i = 0; i < N - 1; i++){
for (j = 0; j < N - i - 1; j++){
if (strlen(wordLib[j]) < strlen(wordLib[j + 1])){
strcpy(tmpword, wordLib[j]);
strcpy(wordLib[j], wordLib[j + 1]);
strcpy(wordLib[j + 1], tmpword);
}
}
}
for (i = 0; i < N - 1; i++){
for (j = 0; j < N - i - 1; j++){
if ((strlen(wordLib[j]) == strlen(wordLib[j + 1])) && (strcmp(wordLib[j], wordLib[j + 1]) > 0)){
strcpy(tmpword, wordLib[j]);
strcpy(wordLib[j], wordLib[j + 1]);
strcpy(wordLib[j + 1], tmpword);
}
}
}
第2个回答  2016-05-01
不知道你意思表达清楚了没,“首字母相同时按字母表顺序排列”,这句话是不是表达错了,是不是应该是若字符串长度相等时按首字母大小排序,,,,我这按升序排的,输入多少个字符串有define决定,可自己定义,本回答被网友采纳
相似回答