这题其实可以用很简单的方法解出,但是平时训练也是为了复习知识点。
参考代码如下:
#include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char *str[3]; //定义一个字符指针数组,存放三个字符指针分别指向三个输入的字符串 char tmp[100]; //临时变量用来存放从标准输入中输入的字符串 int i; for (i = 0; i < 3; i++) { scanf("%s", tmp); str[i] = (char*)malloc(strlen(tmp) + 1); //开辟内存空间并用str[i]指向这篇区域 strcpy(str[i], tmp); //将输入的字符串拷贝到所开辟的空间中 memset(tmp, 0, sizeof(tmp)); //清0,准备下一次输入 } //再用选择法排序一下 char *tmp2; int j; for (i = 0; i < 2; i++) { for (j = i; j < 3; j++) { //注意此处不能用str[i] > str[j]这样的方式比较,因为他们两者实质是指针,故用strcmp函数 if (strcmp(str[i], str[j]) > 0) { tmp2 = str[i]; str[i] = str[j]; str[j] = tmp2; } } } for (i = 0; i < 3; i++) { printf("%s\n", str[i]); } return 0; }
有任何问题都可以在评论区留言,欢迎交流学习!
0.0分
0 人评分