c语言编程在主函数中输入 5 个字符串,利用指针方法,在另一函数中从 大到小排序,最后再主函数中输出。
时间: 2024-02-12 15:09:07 浏览: 80
好的,这道题很适合用指针来做。以下是示例代码:
```c
#include <stdio.h>
#include <string.h>
// 交换两个字符串的位置
void swap(char **str1, char **str2) {
char *temp = *str1;
*str1 = *str2;
*str2 = temp;
}
// 从大到小排序
void sort_desc(char **str, int n) {
int i, j;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (strcmp(str[i], str[j]) < 0) {
swap(&str[i], &str[j]);
}
}
}
}
int main() {
char str[5][100];
char *p[5];
int i;
// 输入 5 个字符串
for (i = 0; i < 5; i++) {
printf("请输入第 %d 个字符串:", i + 1);
scanf("%s", str[i]);
p[i] = str[i]; // 将指针指向字符串数组中的每个字符串
}
// 从大到小排序
sort_desc(p, 5);
// 输出排序后的字符串
printf("排序后的字符串:\n");
for (i = 0; i < 5; i++) {
printf("%s\n", p[i]);
}
return 0;
}
```
在这个程序中,我们首先定义了一个二维字符数组 `str` 和一个字符指针数组 `p`。然后在主函数中输入 5 个字符串,并将每个字符串的地址保存到指针数组 `p` 中。接着,我们调用 `sort_desc` 函数对指针数组 `p` 中的字符串进行从大到小的排序。最后,我们在主函数中输出排序后的字符串。
在 `sort_desc` 函数中,我们使用了冒泡排序的思想,不过交换的不是整型变量,而是两个字符串的指针。我们使用了 `strcmp` 函数来比较两个字符串的大小,如果前一个字符串小于后一个字符串,就交换它们在指针数组中的位置。最终,指针数组 `p` 中的字符串就按照从大到小的顺序排列了。
注意,这里我们假设每个字符串的长度不超过 99 个字符。如果你需要处理更长的字符串,可以将数组大小调大。
阅读全文