如何用C语言编写一个程序,实现以下功能:接收用户输入五个长度不超过80字符的字符串,然后对这些字符串进行字典序排序,最后分别显示排序前和排序后的字符串列表?
时间: 2024-12-22 22:18:27 浏览: 58
在C语言中,你可以通过以下几个步骤来编写这样一个程序:
1. **包含头文件**:
首先,需要包含`stdio.h`和`string.h`,它们包含了处理输入、输出以及字符串操作的函数。
```c
#include <stdio.h>
#include <string.h>
```
2. **声明结构体**:
创建一个结构体来存储字符串及其索引,便于后续操作。
```c
typedef struct {
char str[90]; // 略大于80以容纳空格
int index;
} StrData;
```
3. **读取用户输入**:
使用循环从用户那里获取5个字符串,并存储在`StrData`数组中。
```c
int main() {
const int MAX_STR = 5;
StrData strList[MAX_STR];
for (int i = 0; i < MAX_STR; i++) {
printf("请输入第 %d 个字符串(不超过80字符):", i + 1);
fgets(strList[i].str, sizeof(strList[i].str), stdin); // 用fgets防止超长字符串
strList[i].str[strcspn(strList[i].str, "\n")] = '\0'; // 清理换行符
}
```
4. **排序字符串**:
使用`qsort`函数对`StrData`数组按字典序排序。这里我们需要自定义一个比较函数来完成排序。
```c
// 自定义比较函数
int compare(const void* a, const void* b) {
return strcmp(((StrData*)a)->str, ((StrData*)b)->str);
}
void sortStrings(StrData strList[], int n) {
qsort(strList, n, sizeof(StrData), compare);
}
```
5. **显示排序结果**:
排序后,打印排序前和排序后的字符串。
```c
// 打印原始字符串
printf("原始字符串列表:\n");
for (int i = 0; i < MAX_STR; i++) {
printf("%s\n", strList[i].str);
}
// 排序并打印
sortStrings(strList, MAX_STR);
printf("\n排序后的字符串列表:\n");
for (int i = 0; i < MAX_STR; i++) {
printf("%s\n", strList[i].str);
}
```
6. **结束程序**:
最后记得添加返回值和结束`main`函数。
```c
return 0;
}
```
将上述代码整合在一起,就得到了完整的程序。运行这个程序,它会接收用户输入的5个字符串,然后按照字典顺序显示出来。
阅读全文
相关推荐


















