原题链接:[编程入门]三个字符串的排序
解题思路:
找一个空函数(空容器),通过字符串的比较函数和复制函数,分别对三个字串进行比较,按照顺序进行复制,最后输出。
涉及知识点:
当两个字符串(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分
32 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
#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#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);放一个指针版本的 #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; }大神们,求教,帮我看一下错的地方,一直输出白色方框。。 #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; }