c语言 从键盘输入5个字符串(每个字符串长度不超过80个字符),对字符串从小到大排序,输出排序前和排序后的字符串。
时间: 2024-12-20 16:28:26 浏览: 7
在C语言中,你可以使用`qsort()`函数来进行字符串数组的快速排序。首先,你需要从键盘输入五个字符串并存储在一个动态分配的字符串数组中,然后利用自定义的比较函数对它们进行排序,最后打印出排序前和排序后的结果。以下是简单的步骤:
1. 定义结构体 `string_with_length` 包含字符串和其长度。
```c
struct string_with_length {
char str[81];
int len;
};
```
2. 使用 `malloc()` 分配内存存储字符串及其长度。
```c
struct string_with_length* arr = malloc(sizeof(struct string_with_length) * 5);
```
3. 输入字符串,并计算长度。
```c
for (int i = 0; i < 5; i++) {
fgets(arr[i].str, sizeof(arr[i].str), stdin);
arr[i].len = strlen(arr[i].str);
}
```
4. 自定义比较函数用于字符串排序。
```c
int compare_strings(const void* a, const void* b) {
return strcmp(((struct string_with_length*)a)->str, ((struct string_with_length*)b)->str);
}
```
5. 调用 `qsort()` 进行排序。
```c
qsort(arr, 5, sizeof(struct string_with_length), compare_strings);
```
6. 打印排序前的字符串。
```c
for (int i = 0; i < 5; i++) {
printf("%s (%d)\n", arr[i].str, arr[i].len);
}
```
7. 打印排序后的字符串。
```c
printf("Sorted:\n");
for (int i = 0; i < 5; i++) {
printf("%s (%d)\n", arr[i].str, arr[i].len);
}
```
8. 最后别忘了释放内存。
```c
free(arr);
```
阅读全文