#include<stdio.h>
#include<string.h>#include<stdlib.h>char dir[2000][7]={0},sorted[2000][7]={0}; //要求一个单词最多有6个字母,所以数组第二维应该是7,放'\0',所以可以稍微放大点,防止出错 char w[10]={0}; //虽然要求6个,这里养成多写一下点的习惯 int cmp_char(const void* _a,const void* _b){ char* a=(char*) _a; char* b=(char*) _b; return *a-*b;} int cmp_string(const void* _a,const void* _b){ char* a=(char*)_a; char* b=(char*)_b; return strcmp(a,b);}int main(void)
{ int i=0; while(1) { scanf("%s",dir[i]); if(strcmp(dir[i],"******")==0) break; i++; } int len=i; qsort(dir,len,sizeof(dir[0]),cmp_string); for(i=0;i<len;i++) { strcpy(sorted[i],dir[i]); qsort(sorted[i],strlen(sorted[i]),sizeof(char),cmp_char);}
while(1) { scanf("%s",w); qsort(w,strlen(w),sizeof(char),cmp_char); int found=0;//:(的标志 for(i=0;i<len;i++) { if(strcmp(w,sorted[i])==0) { found=1; printf("%s ",dir[i]); } } if(!found) printf(":)"); printf("\n"); } return 0;}