PTA英文单词排序C语言答案
时间: 2025-05-30 20:13:13 浏览: 29
### PTA 英文单词排序 C语言 实现
以下是基于问题描述和参考资料提供的解决方案,使用纯C语言实现英文单词按长度从小到大排序的功能。如果两个单词长度相等,则保持它们原有的输入顺序。
#### 代码实现
```c
#include <stdio.h>
#include <string.h>
#define MAX_WORDS 20
#define MAX_LEN 10
int main() {
char words[MAX_WORDS][MAX_LEN + 1];
int lengths[MAX_WORDS];
int count = 0;
// 输入单词直到遇到 '#'
while (count < MAX_WORDS && scanf("%s", words[count]) == 1) {
if (words[count][0] == '#' && strlen(words[count]) == 1) {
break;
}
lengths[count] = strlen(words[count]);
count++;
}
// 冒泡排序算法:按单词长度升序排列
for (int i = 0; i < count - 1; i++) {
for (int j = 0; j < count - i - 1; j++) {
if (lengths[j] > lengths[j + 1]) {
// 交换长度
int temp_len = lengths[j];
lengths[j] = lengths[j + 1];
lengths[j + 1] = temp_len;
// 交换单词
char temp_word[MAX_LEN + 1];
strcpy(temp_word, words[j]);
strcpy(words[j], words[j + 1]);
strcpy(words[j + 1], temp_word);
}
}
}
// 输出结果
for (int i = 0; i < count; i++) {
printf("%s ", words[i]);
}
return 0;
}
```
#### 功能说明
该程序实现了以下功能:
- **输入处理**:读取多个单词,每行一个,当检测到字符`#`时停止输入[^1]。
- **冒泡排序**:利用嵌套循环比较相邻单词的长度,并根据长度进行升序调整位置[^1]。
- **稳定排序**:对于长度相同的单词,其相对顺序不会改变,满足题目要求[^1]。
- **输出格式**:最终输出排序后的单词列表,每个单词后附加一个空格[^1]。
#### 测试案例
假设输入如下:
```
blue
red
yellow
green
purple
#
```
运行上述代码后,输出应为:
```
red blue green yellow purple
```
---
###
阅读全文
相关推荐









