解题思路:

1、字符串比较大小的函数strcmp(char *a, char *b)

    a) a == b 返回0

    b)a < b 返回负值

    c) a > b返回正值

2、字符串拷贝函数 strcpy(char *a, char *b),将字符串b拷贝到字符串a中。

3、既然是排序问题,那么就可以用冒泡排序法。

注意事项:

参考代码:

#include<stdio.h>
#include<string.h>

int main()
{
	char a[3][128], tmp[128];
	int i, j;
	for(i=0; i<3; i++)
	{
		scanf("%s", a[i]);
	}
	for(i=0; i<3; i++)
	{
		for(j=i+1; j<3; j++)
		{
			if(strcmp(a[i], a[j]) > 0)
			{
				memset(tmp, 0, sizeof(tmp));
				strcpy(tmp, a[i]);
				strcpy(a[i], a[j]);
				strcpy(a[j], tmp);
			}
		}
	}
	for(i=0; i<3; i++)
	{
		printf("%s\n", a[i]);
	}
	return 0;
}


点赞(27)
 

0.0分

64 人评分

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

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

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

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

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

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

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

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

评论列表 共有 44 条评论

RIRI 3年前 回复TA
#include<stdio.h>
#include<string.h>
int main()
{
	char Array[3][100];
	char MyArray[100];
	for (size_t i = 0; i < 3; i++)
	{
		scanf("%s", Array[i]);
	}
	for (size_t i = 0; i < 3; i++)
	{
		for (size_t j = i+1; j < 3; j++)
		{
			if (strcmp(Array[i],Array[j])>0)
			{
				strcpy(MyArray, Array[i]);
				free(Array[i]);
				strcpy(Array[i], Array[j]);
				free(Array[j]);
				strcpy(Array[j], MyArray);
				free(MyArray);
			}
		}
		printf("%s\n", Array[i]);
	}
	return 0;
}
懒散 3年前 回复TA
这是选择排序
五仁月饼 3年前 回复TA
@像光 @uq_73401286862 不好意思,没仔细看,抱歉
五仁月饼 3年前 回复TA
@像光 @uq_73401286862 大佬,这个tmp需要声明吗?因为在我看来这是凭空出现了一个数组啊
月儿会弯 3年前 回复TA
单纯想用函数调用
#include <stdio.h>
#include <string.h>
#define N 100
char ch[3][N];

void bubble(char ch[][N],int i);

int main(int argc,int const* argv[])
{
	int i=0;
	for(i=0;i<3;i++)
	{
	scanf("%s",ch[i]);
		}
		bubble(ch,3);
		for(int m=0;m<3;m++)
		printf("%s\n",ch[m]);
	return 0;
 } 
void bubble(char ch[][N],int i)
{
	char character[128];
	for(int j=0;j<i;j++)
	{
		for(int k=j+1;k<i;k++)
		if(strcmp(ch[j],ch[k])>0)
		{
			memset(character, 0, sizeof(character));
                strcpy(character, ch[j]);
                strcpy(ch[j], ch[k]);
                strcpy(ch[k], character);
		}
	}		
}
月儿会弯 3年前 回复TA
@像光 既然你诚心诚意的问了 那么我就*******你 这个函数是string库函数里面的  作用是将数组清零 方便又快捷
像光 4年前 回复TA
@像光 后面的sizeof那个地方有什么需要注意的吗
像光 4年前 回复TA
求解memset函数在这里的用法
ALVIN 4年前 回复TA
# include <stdio.h>
# include <string.h>
int main(void)
{char a[128],b[128],c[128],d[128],e[128],f[128];
	gets(a);gets(b);gets(c);
	if(strcmp(a, b)>0)
	{strcpy(f, a); strcpy(e, b);}	
	else
	{strcpy(f, b); strcpy(e, a);}
	if(strcmp(f, c)>0 && strcmp(a, b)>0)
		strcpy(d, c);			
	else if(strcmp(f, c)>0 && strcmp(a, b)<0)
		strcpy(d, c);			
	else if(strcmp(f, c)<0 && strcmp(a, b)>0)
	{strcpy(f, c); strcpy(d, b); strcpy(e, a);}
	else
	{strcpy(f, c); strcpy(e, b); strcpy(d, a);}
	printf("%s\n", d); printf("%s\n", e); printf("%s\n", f);									
	return 0;		
}
竟然过了
彌。 4年前 回复TA
老师这题用字典序可以做吗