解题思路:

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

涉及知识点:

    当两个字符串(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 条评论

杨少 5年前 回复TA
@杨少 只是这样只适合小范围的字符串
杨少 5年前 回复TA
握草  可以的  啊哈哈哈
90度微笑 5年前 回复TA
@90度微笑 二维数组函数版~~打不下了~~
90度微笑 5年前 回复TA
#include <stdio.h>
#include <string.h>
char zifu(char (*a)[100]);
int main()
{
	char a[3][100];
	int i,j;
       for(i=0;i<3;i++)
	   {
	   scanf("%[a-z]s",a[i]);
       getchar();
      
       }
       zifu(a);
       for(i=0;i<3;i++)
       {
       	printf("%s\n",a[i]);
	   }

}
char zifu(char (*a)[100])
{    char b[100][100];
	int i=0,j=0,t;

	for(i=0;i<2;i++){
	  if(a[i][j]>a[i+1][j]){
		 strcpy(b[0],a[i]);
	     strcpy(a[i],a[i+1]);
	     strcpy(a[i+1],b[0]);
         }
	}
	for(i=0;i<2;i++){
		if(a[i][j]==a[i+1][j]){
			j++;
			if(a[i][j]>a[i+1][j]){
			strcpy(b[0],a[i]);
	        strcp
C杯 5年前 回复TA
#include<stdio.h>
#include<string.h>
int main()
{
    char a[100],b[100],c[100];
    scanf("%s%s%s",a,b,c);//获取三行字符串,放到数组中
    if(strcmp(a,b)>0)
    {
        if(strcmp(a,c)<0)
            printf("%s\n%s\n%s",b,a,c);
        else
        {
            if(strcmp(b,c)>0)
                printf("%s\n%s\n%s",c,b,a);
            else
            {
                printf("%s\n%s\n%s",a,c,b);
            }
        }
    }
    else
    {
        if(strcmp(a,c)>0)
            printf("%s\n%s\n%s",c,a,b);
        else
        {
            if(strcmp(b,c)>0)
                 printf("%s\n%s\n%s",a,c,b);
C杯 5年前 回复TA
用strcpy函数的话,如果字符串长度不一样,那么最后输出的字符串就全乱了,当这个题目的要求的字符串的长度是一样的,所有被踢不需要考虑。我写出来是为了提醒大家慎用
C杯 5年前 回复TA
@君莫笑 if后面应该有花括号,没有花括号的话默认是if下面的一行属于if判断后执行的语句
编程cxk 5年前 回复TA
放一个指针版本的
#include <stdio.h>
#include <string.h>
int main(int argc,const char *argv[])
{
	char str1[100],str2[100],str3[100];
	gets(str1);
	gets(str2);
	gets(str3);
	char *p1=str1,*p2=str2,*p3=str3,*p4;
	if(strcmp(p1,p2)>0){
		p4=p1;
		p1=p2;
		p2=p4;
	}
	if(strcmp(p1,p3)>0){
		p4=p1;
		p1=p3;
		p3=p4;
	}
	if(strcmp(p2,p3)>0){
		p4=p2;
		p2=p3;
		p3=p4;
	}
	puts(p1);
	puts(p2);
	puts(p3);
	return 0;
}
君莫笑 5年前 回复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\n%s\n%s\n",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;
}
飞羽 5年前 回复TA
@飞羽 已解决