键盘输入3个字符串,利用函数调用的形式,对3个字符串比较大小,然后再次利用函数调用的形式以指针变量作为形参,数组名作为实参进行参数传递,完成对字符串的交换,最后按由小到大的顺序输出3个字符串。
时间: 2023-11-10 20:26:42 浏览: 96
从键盘上输入一串英文字符(不含空格与其他字符),统计每个字符的数目,并输出字母及相应的数目。
好的,我来给您解答这个问题。
首先,我们需要编写两个函数:一个用于比较三个字符串的大小,另一个用于交换三个字符串的值。
以下是完整代码:
```c
#include <stdio.h>
#include <string.h>
void compare(char *str1, char *str2, char *str3);
void swap(char **p1, char **p2);
int main() {
char str1[20], str2[20], str3[20];
printf("请输入三个字符串:");
scanf("%s %s %s", str1, str2, str3);
compare(str1, str2, str3);
printf("由小到大的顺序为:%s %s %s\n", str1, str2, str3);
return 0;
}
void compare(char *str1, char *str2, char *str3) {
if (strcmp(str1, str2) > 0) {
swap(&str1, &str2);
}
if (strcmp(str1, str3) > 0) {
swap(&str1, &str3);
}
if (strcmp(str2, str3) > 0) {
swap(&str2, &str3);
}
}
void swap(char **p1, char **p2) {
char *temp = *p1;
*p1 = *p2;
*p2 = temp;
}
```
在主函数中,我们先输入三个字符串,然后调用比较函数 `compare()` 进行比较,最后输出排序后的结果。
比较函数 `compare()` 中,我们用 `strcmp()` 函数进行字符串比较,如果字符串1大于字符串2,则调用交换函数 `swap()` 交换这两个字符串的值,以此类推,最终实现由小到大的排序。
交换函数 `swap()` 中,我们使用指向指针的指针,将指针1和指针2所指向的字符串交换。
注意,在输入字符串时,我们使用了 `%s` 格式控制符,这会导致输入字符串中不能包含空格和其他特殊字符。如果需要输入包含空格和其他特殊字符的字符串,可以使用 `fgets()` 函数。
希望这个答案能够对您有所帮助!
阅读全文