在主函数中输入8个字符串。用另一函数对它们排序。然后在主函数输出这8个已排好序的字符串。要求用指向指针的指针实现。
时间: 2024-02-11 14:05:10 浏览: 61
好的,这是一个比较基础的字符串排序问题。以下是解决方案:
```c++
#include <stdio.h>
#include <string.h>
void sort(char **p, int n) {
char *tmp;
for(int i=0; i<n-1; i++) {
for(int j=i+1; j<n; j++) {
if(strcmp(p[i], p[j]) > 0) {
tmp = p[i];
p[i] = p[j];
p[j] = tmp;
}
}
}
}
int main() {
char *str[8]; // 定义指向指针的指针
char buf[1024];
for(int i=0; i<8; i++) {
printf("请输入第%d个字符串:", i+1);
scanf("%s", buf);
str[i] = new char[strlen(buf) + 1];
strcpy(str[i], buf);
}
sort(str, 8);
printf("排序后的字符串为:\n");
for(int i=0; i<8; i++) {
printf("%s\n", str[i]);
delete [] str[i];
}
return 0;
}
```
解释一下这个程序:首先定义了一个指向指针的指针 `char **p`,然后在主函数中定义了一个 `char *str[8]` 数组,其中每个元素都是指向 `char` 类型的指针。在输入字符串时,我们需要先用 `new` 动态分配内存来存储字符串,然后再将指针赋值给 `str[i]`。排序函数 `sort` 中使用了冒泡排序法来对字符串进行排序。最后在主函数中输出已排好序的字符串,并使用 `delete` 释放内存。
阅读全文