用C语言编写函数使字符串从大到小排列输出
时间: 2024-11-09 13:29:11 浏览: 47
在C语言中,你可以使用qsort()函数结合冒泡排序的思想来实现字符串数组的降序排列。这里是一个简单的例子,首先假设我们有一个结构体,包含一个指向字符数组的指针,并提供比较函数以便qsort()使用:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义一个结构体来存储字符串及其索引
typedef struct {
char* str;
int index;
} StrCompare;
// 比较函数,用于qsort()
int compare(const void *a, const void *b) {
StrCompare* sa = (StrCompare*) a;
StrCompare* sb = (StrCompare*) b;
return strcmp(sb->str, sa->str); // 字符串自然顺序比较,逆序即降序
}
void sort_strings_desc(char** arr, int n) {
// 创建一个临时数组,存放原始索引信息
StrCompare* temp = malloc(n * sizeof(StrCompare));
for (int i = 0; i < n; i++) {
temp[i].str = arr[i];
temp[i].index = i;
}
// 使用qsort对字符串进行降序排列
qsort(temp, n, sizeof(StrCompare), compare);
// 根据原始索引将排好序的字符串复制回原数组
for (int i = 0; i < n; i++) {
arr[temp[i].index] = temp[i].str;
}
free(temp);
}
int main() {
char* strings[] = {"hello", "world", "C", "programming"};
int n = sizeof(strings) / sizeof(strings[0]);
printf("Original array:\n");
for (int i = 0; i < n; i++) {
printf("%s ", strings[i]);
}
puts("");
sort_strings_desc(strings, n);
printf("Sorted in descending order:\n");
for (int i = 0; i < n; i++) {
printf("%s ", strings[i]);
}
puts("");
return 0;
}
```
这个程序首先创建了一个临时数组并保存了原始字符串和它们的索引,然后通过qsort()函数对字符串进行排序,最后根据原始索引将结果放回原数组。
阅读全文