解题思路:

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

涉及知识点:

    当两个字符串(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;
}


 

0.0分

39 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区

为什么要有比较3?
不应该是
比较1之后a已经小于b
比较2之后b小于c了吗?
求解......
2020-01-31 19:35:02
为什么我这个运行错误?在我自己的编译器上运行过是和样例完美符合的。
#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;
}
2019-12-03 12:16:56
握草  可以的  啊哈哈哈
2019-11-16 20:55:23
#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
2019-09-18 18:03:38
#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);
2019-08-16 19:55:42
用strcpy函数的话,如果字符串长度不一样,那么最后输出的字符串就全乱了,当这个题目的要求的字符串的长度是一样的,所有被踢不需要考虑。我写出来是为了提醒大家慎用
2019-08-16 19:53:49
放一个指针版本的
#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;
}
2019-07-18 17:45:54
大神们,求教,帮我看一下错的地方,一直输出白色方框。。
#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;
}
2019-05-05 19:57:58