输入n个字符串,按从大到小次序排序,并输出。要求运用指针与函数,实现输入输出,排序等操作
时间: 2024-05-02 07:16:50 浏览: 102
下面是一个示例程序,可以实现输入n个字符串,按照从大到小的顺序进行排序,并输出排序后的结果:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100 // 字符串的最大长度
#define MAX_N 100 // 最多输入的字符串个数
void sort_strings(char *strings[], int n); // 对字符串进行排序的函数
int main() {
char *strings[MAX_N]; // 用指针数组来存储字符串
int n; // 字符串的个数
printf("请输入字符串的个数(不超过%d个):", MAX_N);
scanf("%d", &n);
printf("请逐个输入%d个字符串(每个字符串长度不超过%d个字符):\n", n, MAX_LEN);
for (int i = 0; i < n; i++) {
char *s = (char *) malloc((MAX_LEN + 1) * sizeof(char)); // 动态分配空间来存储字符串
scanf("%s", s);
strings[i] = s; // 将指针存储到指针数组中
}
sort_strings(strings, n); // 对字符串进行排序
printf("排序后的结果为:\n");
for (int i = 0; i < n; i++) {
printf("%s\n", strings[i]); // 逐个输出排序后的字符串
free(strings[i]); // 释放动态分配的空间
}
return 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 (strcmp(strings[j], strings[j + 1]) < 0) {
char *temp = strings[j];
strings[j] = strings[j + 1];
strings[j + 1] = temp;
}
}
}
}
```
程序中用指针数组来存储输入的字符串,使用 `malloc()` 动态分配了存储字符串的空间,然后将指针存储到指针数组中。对字符串进行排序的函数 `sort_strings()` 使用了冒泡排序算法,最后逐个输出排序后的字符串,并释放动态分配的空间。注意,使用了动态分配空间后一定要记得在使用完毕后释放空间,否则会造成内存泄漏。
阅读全文