解题思路:
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分
81 人评分
朋友们,请教一下,第十行,本来定义的二维,写的一维,没写列,表示的是接收这一行的吗, 还有假如定义的列是3,我赋值100000个字母也没事,这不算越界吗
#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); } 我的
memset(tmp, 0, sizeof(tmp)); 这一句不写行不行啊
南岸以南南岸哀 2022-03-07 18:29:44 |
可
uq_47536912922 2023-02-06 20:06:20 |
tmp应该要清0,不写会出现bug,可以用tmp[i]=0代替
请大佬指教 这总是运行错误怎么回事 #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; }
#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; }
回文串 (C语言代码)浏览:3095 |
字符串对比 (C语言代码)浏览:1469 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:563 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:562 |
淘淘的名单 (C语言代码)浏览:1167 |
1025题解浏览:796 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:585 |
A+B for Input-Output Practice (VI) (C语言代码)浏览:575 |
简单的a+b (C语言代码)浏览:618 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:631 |