分享快乐散分(小牛 中牛 大牛 统统飘过~~~~~~~)
题目:估计老掉牙了由控制台输入N行字符串 由程序把这些字符串接收进来 然后对这些字符串进行排序 最后输出排序后的字符串。
解题有2种方式:
1、使用指针数组 2、使用二级字符串指针
下面分别就这两种方式给出代码 欢迎指正
1、以下是使用指针数组完成
程序代码:
////////////////////////////////////////////////////////// #include <stdio.h> #include <string.h> #include <malloc.h> #define N 10 int main() { char *p[N]; char *tmp; int i=0,j=0; for(i=0;i<N;i++) { p[i]=(char*)malloc(256); //给字符串开辟内存空间 memset(p[i],0,sizeof(p[i])); //初始化为 0 } i=0; while(i<N) { scanf("%s",p[i]); i++; } for(i=0;i<N;i++) { for(j=i+1;j<N;j++) { if(strcmp(p[i],p[j])>0) //由小到大排序 { tmp=p[i]; p[i]=p[j]; p[j]=tmp; } } } printf("======== 神奇的分界线========\n"); for(i=0;i<N;i++) { printf("%s\n",p[i]); } return 0; }
2、以下使用二级字符串指针完成
程序代码:
#include <stdio.h> #include <string.h> #include <malloc.h> #define N 10 int main() { char **p; char *tmp; int i=0,j=0; p= (char**)malloc(N*sizeof(char*)); //给指针数组开辟内存空间 for(i=0;i<N;i++) *(p+i)=(char*)malloc(256); //给字符串开辟内存空间 i=0; while(i<N) { scanf("%s",*(p+i)); i++; } for(i=0;i<N;i++) { for(j=i+1;j<N;j++) { if(strcmp(*(p+i),*(p+j))>0) //由小到大排序 { tmp=*(p+i); *(p+i)=*(p+j); *(p+j)=tmp; } } } printf("======== 神奇的分界线========\n"); for(i=0;i<N;i++) { printf("%s\n",*(p+i)); } return 0; }