解题思路:
注意事项:
参考代码:
#include <stdio.h>
#include <string.h>
int main() {
char str[5000], str1[105][55];
gets(str);
str[strlen(str)] = '\0';
int i = 0, start = 0, end, j, k = 0;
while (1) {
while (str[i] == ' ') {
i++; // 跳过连续的空格
}
if (str[i] == '\0') {
break; // 已经到达字符串末尾
}
start = i; // 记录单词的起始位置
while (str[i] != ' ' && str[i] != '\0') {
i++; // 找到单词的末尾位置
}
end = i - 1; // 记录单词的末尾位置
for (j = start; j <= end; j++) {
str1[k][j - start] = str[j]; // 将单词复制到二维数组中
}
str1[k][j - start] = '\0'; // 添加字符串结束符
k++; // 单词计数器加一
}
for (i = 0; i < k - 1; i++) {
for (j = 0; j < k - i - 1; j++) {
if (strcmp(str1[j], str1[j + 1]) > 0) {
char temp[55];
strcpy(temp, str1[j]);
strcpy(str1[j], str1[j + 1]);
strcpy(str1[j + 1], temp);
}
}
}
printf("%s\n", str1[0]); // 输出第一个单词
// 输出按字典序排序的单词,重复的单词只输出一次
for (i = 1; i < k; i++) {
if (strcmp(str1[i], str1[i - 1]) != 0) {
printf("%s\n", str1[i]);
}
}
return 0;
}
0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复