这题简直有毒!
魔咒词典
https://www.nowcoder.com/practice/c6ca566fa3984fae916e6d7beae8ea7f
#include <stdio.h> #include<string.h> struct Mz{ char m[21]; char g[81]; }mz[100001]; int main(){ int N,i;char b; for(i=0;;i++){ scanf("%c",&b); if(b=='@'){ getchar();getchar();getchar();getchar();//吃掉END@ break; } for(int k=0;;k++){ scanf("%c",&mz[i].m[k]); if(mz[i].m[k]==']'){ mz[i].m[k]='\0'; break; } } getchar();//把空格吃了 gets(mz[i].g); } scanf("%d",&N); char temp[80],c; while(N--){ scanf("%c",&c); if(c=='\n')//天坑!!! scanf("%c",&c); int tap=0; if(c=='['){ for(int k=0;;k++){ scanf("%c",&temp[k]); if(temp[k]==']'){ temp[k]='\0'; break; } } for(int j=0;j<i;j++) if(strcmp(mz[j].m,temp)==0){ puts(mz[j].g); tap=1; } if(tap==0)printf("what?\n"); } else { temp[0]=c;char *p=&temp[1]; gets(p); for(int j=0;j<i;j++) if(strcmp(mz[j].g,temp)==0){ puts(mz[j].m); tap=1; } if(tap==0) printf("what?\n"); } } return 0; }