C语言:编写sort函数,实现对n个字符串按从大到小进行排序。在主程序中输入5字符串,调用sort函数对5个字符串s进行排序,然后输出排序结果。
时间: 2024-12-19 12:27:09 浏览: 29
C语言指针一
C语言中,我们通常会用qsort()函数来实现快速排序,但是因为题目要求自定义函数并用数组存储字符串,我们可以手动创建一个冒泡排序算法来实现。下面是一个简单的例子:
```c
#include <stdio.h>
#include <string.h>
// 自定义比较函数,用于字符串大小的比较
int compare(const void *a, const void *b) {
return strcmp(*(const char **)a, *(const char **)b); // 比较两个字符串,大于0表示第一个字符串更大
}
void sort_strings(char *strings[], int n) {
for(int i = 0; i < n - 1; i++) {
for(int j = 0; j < n - i - 1; j++) {
if(compare(strings[j], strings[j+1]) > 0) {
// 如果前一个字符串小于后一个,交换它们的位置
char temp[100];
strcpy(temp, strings[j]);
strcpy(strings[j], strings[j+1]);
strcpy(strings[j+1], temp);
}
}
}
}
int main() {
char strings[5][100]; // 假设每个字符串最多100字符
printf("Enter 5 strings:\n");
for(int i = 0; i < 5; i++) {
fgets(strings[i], sizeof(strings[i]), stdin); // 输入字符串,去掉末尾换行符
strings[i][strcspn(strings[i], "\n")] = '\0'; // 替换换行符
}
sort_strings(strings, 5);
printf("Sorted strings in descending order:\n");
for(int i = 0; i < 5; i++) {
printf("%s ", strings[i]);
}
printf("\n");
return 0;
}
```
在这个程序中,`compare`函数用于字符串的比较,`sort_strings`函数则通过冒泡法对字符串数组进行降序排列。注意,这个示例假设所有输入的字符串都在100字符以内,并且用户输入不会超过一行。
阅读全文