解题思路:

    找一个空函数(空容器),通过字符串的比较函数和复制函数,分别对三个字串进行比较,按照顺序进行复制,最后输出。

涉及知识点:

    当两个字符串(a1与a2)比较时,如果a1的字符串大于a2的字符串,那么strcmp(a1,a2)的值为正整数,也就是大于0,反之如果小,则为负整数,也就是小于0,当他两个相等,那么他们的比较值为0;


代码如下:



#include<stdio.h>
#include<string.h>
#define zz 100      //注意定义字符串数组时,值不要太小,太小了会出现运行错误。
int main()
{
	char a[zz],b[zz],c[zz];
	char x[zz];//空容器

	scanf("%s %s %s",a,b,c);//获取字符串
    
	if(strcmp(a,b)>0)//比较1,并进行交换。
	{
		strcpy(x,a);
		strcpy(a,b);
		strcpy(b,x);
	}
	if(strcmp(a,c)>0)//比较2,并进行交换。
	{
		strcpy(x,a);
		strcpy(a,c);
		strcpy(c,x);
	}
	if(strcmp(b,c)>0)//比较3,并进行交换;
	{
		strcpy(x,b);
		strcpy(b,c);
		strcpy(c,x);
	}

	printf("%s\n%s\n%s\n",a,b,c);//输出交换后的字符串。

	return 0;
}


点赞(24)
 

0.0分

32 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 24 条评论

小洛克 3年前 回复TA
@unomti 比如3,2,1。第一次后成2,3,1。第二次后成1,3,2。所以要第三次比较。
莫阑珊 3年前 回复TA
@90度微笑 66666666666666666666666
莫阑珊 3年前 回复TA
@Vh暖夏 排序呢?
W之谜 3年前 回复TA
@君莫笑 #include<stdio.h> #include<string.h> char fun(char a[100], char b[100], char c[100]) { 	char x[100]; 	if (strcmp(a, b) > 0) 	{ 		strcpy(x, a); 		strcpy(a, b); 		strcpy(b, x); 	} 	if (strcmp(a, c) > 0) 	{ 		strcpy(x, a); 		strcpy(a, c); 		strcpy(c, x); 	} 	if (strcmp(b, c) > 0) 	{ 		strcpy(x, b); 		strcpy(b, c); 		strcpy(c, x); 	} 	printf("%s
%s
%s
", a, b, c); } int main() { 	char a[100], b[100], c[100]; 	scanf("%s%s%s", a, b, c); 	fun(a, b, c); 	return 0; }
菜鸟大队长 3年前 回复TA
@Vh暖夏 太小了吧,字符数组
峰华 4年前 回复TA
@unomti 第一个比较是为了得出a和b中的最小,从而交换位置,使得a,b中的最小的那个赋值给a;第二个比较是为了得出a,b,c,中的最小,因为第一个比较已经得出a>b,从而使得两者中最小的那个赋给了a,接下来就是要比较a是否比c还小从而交换位置使得三者中最小的值赋值给a,第二个的比较就是为了得出三者中的那个最小值,但是得不出b与c的大小关系;第三个比较是为了比较b与c的大小,从而确定三者中的中间值和最大值。
unomti 4年前 回复TA
为什么要有比较3?
不应该是
比较1之后a已经小于b
比较2之后b小于c了吗?
求解......
April 4年前 回复TA
@Vh暖夏 而且人家要你排序你都没有排序啊
April 4年前 回复TA
@Vh暖夏 scanf没有&符号
Vh暖夏 5年前 回复TA
为什么我这个运行错误?在我自己的编译器上运行过是和样例完美符合的。
#include<stdio.h>
int main()
{
	char a[3],b[3],c[3];
	scanf("%s%s%s",a,b,c);
	printf("%s\n%s\n%s\n",c,b,a);
	return 0;
}