思路:先把dict.txt中的名字都转化成数字,存储在数组中,便于查找。需要注意的是数字与字母的对应表里没有字母Q和Z,还有就是如果有多组满足题意,则都需要输出。
代码如下:
/*
ID: michael139
LANG: C
PROG: namenum
*/
#include<stdio.h>
#include<string.h>
char table[8][4]={"ABC","DEF","GHI","JKL","MNO","PRS","TUV","WXY"};
char word[5050][15],word_num[5050][15];
int main () {
FILE *fin = fopen("namenum.in", "r");
FILE *fout = fopen("namenum.out", "w");
FILE *fin2 = fopen("dict.txt","r");
char num[15],temp[15];
int len,i,j,m,k = 0,ok;
while (fscanf(fin2,"%s",temp) != EOF) {
len = strlen(temp);
for (i=0;i<len;i++) {
ok = 0;
for (j=0;j<8;j++) {
for (m=0;m<3;m++) {
if (temp[i]==table[j][m]) {
word_num[k][i] = j+2+'0';
ok = 1;
break;
}
}
if (ok) break;
}
if (!ok) word_num[k][i] = 'X';
}
strcpy(word[k],temp);
k ++;
}
while (fscanf(fin,"%s",num) != EOF) {
ok = 0;
for (i=0;i<k;i++) {
if (!strcmp(num,word_num[i])) {
fprintf(fout,"%s\n",word[i]);
ok = 1;
}
}
if (!ok) fprintf(fout,"NONE\n");
}
return 0;
}