在主函数中输入8个字符串。用另一函数对它们排序。然后在主函数输出这8个已排好序的字符串。要求用指向指针的指针实现。 输入格式: 输入共8行,表示8个字符串。 输出格式: 输出也是8行,表示8个排好序的字符串
时间: 2024-02-22 08:00:32 浏览: 41
对字母和数字排序的c代码
好的,这是一个关于C语言的问题,我会尽力回答。下面是代码实现:
```c
#include <stdio.h>
#include <string.h>
void sort(char **p)
{
int i, j;
char *temp;
for (i = 0; i < 7; i++)
{
for (j = i + 1; j < 8; j++)
{
if (strcmp(p[i], p[j]) > 0)
{
temp = p[i];
p[i] = p[j];
p[j] = temp;
}
}
}
}
int main()
{
char *str[8];
int i;
for (i = 0; i < 8; i++)
{
str[i] = (char *)malloc(sizeof(char) * 20);
scanf("%s", str[i]);
}
sort(str);
for (i = 0; i < 8; i++)
{
printf("%s\n", str[i]);
free(str[i]);
}
return 0;
}
```
在这个程序中,我们使用了指向指针的指针来实现字符串排序。我们首先定义了一个指向指针的指针`char **p`,其中`p`指向一个字符串数组,数组中每个元素都是指向字符的指针。
在`sort`函数中,我们使用了选择排序算法对字符串数组进行排序。为了交换两个字符串,我们使用了一个临时指针变量`temp`来保存其中一个字符串的地址。
在`main`函数中,我们使用了`malloc`函数来动态分配内存来存储每个字符串。在读取完所有字符串之后,我们调用`sort`函数来对它们进行排序。最后,我们使用循环输出排好序的字符串,并使用`free`函数释放所有分配的内存。
希望这个程序能够解决你的问题!
阅读全文