这道题只要开始时将字母转换为对应的数字存在数组num中,然后把输入的数字分位存储在数组name中,最后将字典中的数据现根据num转化为数字,然后与name比较就可以了。
/*
ID: acmerfi1
LANG: C
TASK: namenum
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 15
int name[MAX], flag = 0, i;
int num[26]={2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,0,7,7,8,8,8,9,9,9,0};
char str[MAX], les[MAX];
int main()
{
freopen("namenum.in", "r", stdin);
freopen("namenum.out", "w", stdout);
fgets(les, MAX, stdin);
memset(name, 0, sizeof(name));
for(i = 0; i < strlen(les) - 1; i++)
{
name[i] = les[i] - '0';
}
freopen("dict.txt", "r", stdin);
while(scanf("%s", str) != EOF)
{
for(i = 0; str[i] != 0; i++)
{
if(num[str[i]-'A'] != name[i]) break;
}
if(0 == str[i] && 0 == name[i])
{
printf("%s\n", str);
flag = 1;
}
}
if(!flag) printf("NONE\n");
return 0;
}