在主函数中输入10个字符串。用另一函数对它们排序。然后在主函数输出这10个已排好序的字符串(从大到小)。要求用指针数组实现。 函数接口定义: void sort(char *p[N]);
时间: 2023-09-12 22:07:32 浏览: 72
以下是实现该功能的代码:
```c
#include <stdio.h>
#include <string.h>
#define N 10
#define MAX_LEN 100
void sort(char *p[N]);
int main() {
char str[N][MAX_LEN];
char *p[N];
// 输入10个字符串
printf("请输入10个字符串:\n");
for (int i = 0; i < N; i++) {
scanf("%s", str[i]);
p[i] = str[i];
}
// 对字符串进行排序
sort(p);
// 输出已排序的字符串
printf("排序后的字符串为:\n");
for (int i = 0; i < N; i++) {
printf("%s\n", p[i]);
}
return 0;
}
void sort(char *p[N]) {
char *temp;
for (int i = 0; i < N - 1; i++) {
for (int j = i + 1; j < N; j++) {
if (strcmp(p[i], p[j]) < 0) {
temp = p[i];
p[i] = p[j];
p[j] = temp;
}
}
}
}
```
解释一下代码:
首先,在主函数中定义了一个二维字符数组 `str` 和一个指针数组 `p`,用于存储输入的字符串和指向这些字符串的指针。
然后,通过循环输入10个字符串,并将每个字符串的地址存储到指针数组中。
接着,调用 `sort` 函数对字符串进行排序。排序使用了冒泡排序算法,从大到小排序。
最后,在主函数中输出已排序的字符串。
阅读全文