本题将5个字符串从小到大排序后输出(用指针数组实现)。 函数接口定义: void fsort(char *color[ ], int n);
时间: 2024-10-16 13:14:17 浏览: 49
第5讲 指针高级之指针数组-将若干字符串按字母顺序(由小到大)输出
题目描述的是在一个函数`fsort`中,使用指针数组对五个字符串按照字典序从小到大进行排序。这里的关键点在于指针数组,它实际上是一个指向字符数组的数组,每个元素都是一个字符串的首地址。以下是使用C语言的一个简单示例,我们将采用冒泡排序算法来完成这个任务:
```c
#include <stdio.h>
#include <string.h>
// 定义字符串长度的最大值
#define MAX_LEN 10
// 比较两个字符串并交换它们在数组中的位置
void swap(char** a, char** b) {
char temp[MAX_LEN + 1];
strcpy(temp, *a);
strcpy(*b, *a);
strcpy(*a, temp);
}
// 冒泡排序
void bubble_sort(char* color[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (strcmp(color[j], color[j + 1]) > 0) {
// 使用指针操作交换字符串
swap(&color[j], &color[j + 1]);
}
}
}
}
// 函数接口
void fsort(char *color[], int n) {
bubble_sort(color, n);
}
int main() {
char color[] = {"red", "blue", "yellow", "green", "orange"};
int n = sizeof(color) / sizeof(color[0]);
printf("Before sorting:\n");
for (int i = 0; i < n; i++) {
printf("%s ", color[i]);
}
printf("\n");
fsort(color, n);
printf("After sorting (in ascending order):\n");
for (int i = 0; i < n; i++) {
printf("%s ", color[i]);
}
return 0;
}
```
当你运行这个程序,你会看到原始字符串列表按字母顺序排列的结果。注意,这里的例子假设输入字符串不会超过`MAX_LEN`个字符,并且已包含结束符`\0`。
阅读全文