c语言题目描述 用指针实现:输入3个字符串,按由小到大的顺序输出。 输入 输入3个字符串(长度均不超过80),以换行分隔。 输出 对3个字符串进行升序排序后输出,以换行分隔。 样例输入 Monday Sunday Friday 样例输出 Friday Monday Sunday
时间: 2024-02-18 22:03:49 浏览: 66
好的,这是一道关于使用指针实现字符串排序的C语言题目,下面是解题思路和代码实现:
解题思路:
1. 首先定义一个字符指针数组,用来存放输入的3个字符串;
2. 使用gets()函数分别输入3个字符串,并将它们存放到字符指针数组中;
3. 定义一个指向字符指针数组的指针,用来实现字符串的交换;
4. 使用指针比较大小,对3个字符串进行升序排序;
5. 最后使用循环输出排好序的3个字符串。
代码实现:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 80 // 定义字符串最大长度
int main() {
char str[3][MAX_LEN + 1]; // 定义字符指针数组,存放3个字符串
char *p[3]; // 定义指针数组,用于字符串交换
// 输入3个字符串
for (int i = 0; i < 3; i++) {
gets(str[i]); // 使用gets()函数输入字符串
p[i] = str[i]; // 将字符指针存放到指针数组中
}
// 按升序排序
char *temp;
for (int i = 0; i < 2; i++) {
for (int j = i + 1; j < 3; j++) {
if (strcmp(p[i], p[j]) > 0) { // 使用strcmp()函数比较字符串大小
temp = p[i];
p[i] = p[j];
p[j] = temp;
}
}
}
// 输出排序后的字符串
for (int i = 0; i < 3; i++) {
printf("%s\n", p[i]);
}
return 0;
}
```
注意事项:
1. 在使用gets()函数输入字符串时,为了避免输入的字符串长度超过数组的最大长度,需要定义一个宏MAX_LEN来限制字符串长度;
2. 在使用strcmp()函数比较字符串大小时,如果strcmp()返回值大于0,则说明前面的字符串大于后面的字符串,需要进行交换。
阅读全文