原题链接:[编程入门]三个字符串的排序
解题思路:
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;
}0.0分
64 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
#include<stdio.h> #include<string.h> int main() { char a[100],b[100],c[100]; gets(a);gets(b);gets(c); if(strcmp(a,b)<=0){ if(strcmp(a,c)<=0){ puts(a); if(strcmp(b,c)<=0){ puts(b);puts(c); } else{puts(c);puts(b);} } else{ puts(c); if(strcmp(a,b)<=0){ puts(a);puts(b); } else{puts(b);puts(a);} } } else if(strcmp(b,c)<=0){ puts(b);if(strcmp(a,c)<=0){ puts(a);puts(c); } else{puts(c);puts(a);} } else{ puts(c); if(strcmp(a,b)<=0){ puts(a);puts(b);#include <stdio.h> #include <string.h> char compare(char *p,char *q,char *w,char *k); void main () { char a[3][40]; char str[60]; char *p,*q,*w,*k; int i; for(i=0;i<3;i++) { scanf("%s",a[i]); } p=a[0];q=a[1];w=a[2];k=str; compare(p,q,w,k); printf("%s\n",p); printf("%s\n",q); printf("%s",w); } char compare(char *p,char *q,char *w,char *k) { if(strcmp(p,q)>0) { strcpy(k,p);strcpy(p,q);strcpy(q,k); } if(strcmp(p,w)>0) { strcpy(k,p);strcpy(p,w);strcpy(w,k); } if(strcmp(q,w)>0) { strcpy(k,q);strcpy(q,w);strcpy(w,k); } return (1); } 大佬能看懂我写的指针吗?过了,但感觉指针用的是错的。#include <stdio.h> #include <string.h> char compare(char *p,char *q,char *w,char *k); void main () { char a[3][40]; char str[60]; char *p,*q,*w,*k; int i; for(i=0;i<3;i++) { scanf("%s",a[i]); } p=a[0];q=a[1];w=a[2];k=str; compare(p,q,w,k); printf("%s\n",p); printf("%s\n",q); printf("%s",w); } char compare(char *p,char *q,char *w,char *k) { if(strcmp(p,q)>0) { strcpy(k,p);strcpy(p,q);strcpy(q,k); } if(strcmp(p,w)>0) { strcpy(k,p);strcpy(p,w);strcpy(w,k); } if(strcmp(q,w)>0) { strcpy(k,q);strcpy(q,w);strcpy(w,k); } return (1); } 我的请大佬指教 这总是运行错误怎么回事 #include<stdio.h> #include<string.h> void swap (char *s1,char *s2) { char t[10]; strcpy(t,s1); strcpy(s1,s2); strcpy(s2,t); } int main() { char a[10]; char b[10]; char c[10]; scanf("%s%s%s",&a,&b,&c); if(strcmp(a,b)>0) swap(a,b); if(strcmp(a,c)>0) swap(a,c); if(strcmp(b,c)>0) swap(b,c); printf("\n%s\n%s\n%s",a,b,c); return 0; }