N-48.字符串排序
题目描述:
六级考试马上要来了,Jaanai在背单词备战六级的过程中,看到了单词本某一页上的n个长短不一的单词,背单词背累的她开始把玩这些单词:她把每个单词的字母打乱并按照字典序从小到大的顺序排列,随后单词与单词之间按照首字母字典序从大到小的顺序排列(注:字典序顺序与ASCII码一致)(如果两字符串的首字母相同,保留原来的次序,即稳定排序)。Jaanai想让你帮她用程序解决这个无聊的事情。
输入格式:
n行,每行一个仅由大小写字母组成的字符串。
输出格式:
n行,代表排序后的结果。
直接按部就班的做就行了。
首先对字符串内部排序,再对字符串排序即可
两次冒泡排序就行。
#include <stdio.h>
#include <string.h>
char s[11][55] = {0};
char temp[55] = {0};
int main () {
int cnt = 0;
while (scanf("%s", s[cnt + 1]) != EOF) cnt ++;
for (int i = 1; i <= cnt; i++) {
for (int j = 0; j < strlen(s[i]); j++) {
for (int k = 0; k < strlen(s[i]) - 1; k++) {
if (s[i][k] > s[i][k + 1]) {
char tmp = s[i][k];
s[i][k] = s[i][k + 1];
s[i][k + 1] = tmp;
}
}
}
}
for (int i = 1; i <= cnt; i++) {
for (int j = 1; j < cnt; j++) {
if (s[j][0] == s[j + 1][0]) continue;
if (strcmp(s[j], s[j + 1]) < 0) {
strcpy(temp, s[j + 1]);
strcpy(s[j + 1], s[j]);
strcpy(s[j], temp);
}
}
}
for (int i = 1; i <= cnt; i++) printf("%s\n", s[i]);
return 0;
}
本文作者:misasteria
本文链接:https://www.cnblogs.com/misasteria/p/16285126.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步