//快排 充分利用qsort()函数! #include <stdio.h> #include <string.h> #include <stdlib.h> int cmp_w(const void *a, const void *b) { return strcmp((char *)a, (char *)b); } int cmp_str(const void *a,const void *b) { return *(char *)a-*(char *)b; } int main() { int i, k, n; char dic[101][7], temp[101][7], temp1[101][7]; char word[7]; int len, len_w; int flag; for(i=0;; i++) { scanf(" %s", dic[i]); len = strlen(dic[i]); strcpy(temp[i],dic[i]); // printf("%s/n", temp[i]); if(!strcmp(dic[i],"XXXXXX")) { n=i; break; } qsort(temp[i],len,sizeof(char), cmp_str); // printf("%s/n", temp[i]); } while(1==scanf(" %s", word)) { if(!strcmp(word, "XXXXXX")) break; len_w=strlen(word); qsort(word,len_w,sizeof(char),cmp_w); // printf("%s/n",word); flag=1; k=0; for(i=0; i<n; i++) { if(!strcmp(word,temp[i])) { flag=0; strcpy(temp1[k++], dic[i]); } } if(flag) printf("NOT A VALID WORD/n"); else { qsort(temp1, k, sizeof(temp[0]), cmp_w); for(i=0; i<k; i++) printf("%s/n", temp1[i]); } printf("******/n"); } return 0; }