////////给字符数组动态分配内存,完成字符串的排序 #include<stdio.h>#include<string.h>#include<stdlib.h>int Accept(char *[]); //接受void Sort(char *[],int); //排序void Print(char *[],int); //打印void main(){ char *str[5]; int n; n=Accept(str); //接受句子的数目,返回一个字符串数量 Sort(str,n); Print(str,n);} int Accept(char * name[]) { int m,i; printf("input nums(1 to 5) of string:"); scanf("%d",&m); for(i=0;i<m;i++) { name[i]=(char *)malloc(20*sizeof(char)); } for(i=0;i<m;i++) { printf("input %d string:",i+1); scanf("%s",name[i]); } return m;} void Sort(char *name[],int m){ int i,j,k; char temp[20]; for(i=1;i<m;i++) { for(j=0;j<i;j++) if(strcmp(name[j],name[i])<0) { strcpy(temp,name[i]); for(k=i;k>j;k--) { strcpy(name[k],name[k-1]); } strcpy(name[j],temp); } } } void Print(char *name[],int m){ int i; printf("\n\nthe sort strings:\n"); for(i=0;i<m;i++) { printf("the %d string:",i+1); printf("%s\n",name[i]); } }

评论