用指针实现:输入3个字符串,按由小到大的顺序输出。 输入 输入3个字符串(长度均不超过80),以换行分隔。 输出 对3个字符串进行升序排序后输出,以换行分隔。
时间: 2024-01-02 07:10:18 浏览: 69
可以使用冒泡排序来实现字符串的排序,算法如下:
1. 定义一个指针数组,用来存储输入的字符串。
2. 使用循环读入三个字符串,将它们存储到指针数组中。
3. 使用冒泡排序算法对指针数组进行排序,排序的依据是字符串的大小关系。
4. 按照排序后的顺序输出字符串。
下面是代码实现:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 80
int main() {
char *str[3]; // 定义指针数组
char buffer[MAX_LENGTH];
// 输入三个字符串
for (int i = 0; i < 3; i++) {
fgets(buffer, MAX_LENGTH, stdin);
buffer[strcspn(buffer, "\n")] = '\0'; // 去掉换行符
str[i] = strdup(buffer); // 存储到指针数组中
}
// 冒泡排序
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2 - i; j++) {
if (strcmp(str[j], str[j+1]) > 0) {
char *temp = str[j];
str[j] = str[j+1];
str[j+1] = temp;
}
}
}
// 输出排序结果
for (int i = 0; i < 3; i++) {
printf("%s\n", str[i]);
}
// 释放内存
for (int i = 0; i < 3; i++) {
free(str[i]);
}
return 0;
}
```
注意,这里使用了 `strdup` 函数来复制字符串,因为直接将指针存储到数组中可能会出现问题。同时,在输出字符串时,需要使用 `%s` 格式化字符串。
阅读全文