1、逐個讀取dict.txt中的單詞,將其轉換成對應的數字,判斷與輸入是否相等。
2、最佳化:判斷單詞長度是否相等。
/*<br />ID: gengjia1<br />LANG: C<br />TASK: namenum<br />*/<br />#include <stdio.h><br />#include <stdlib.h><br />#include <string.h><br />//#define NDEBUG<br />#include <assert.h><br />const char alpha[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'};<br />char s[13];<br />char name[13];<br />int main(void) {<br />FILE *fin1 = fopen ("namenum.in", "r");<br />FILE *fin2 = fopen ("dict.txt", "r");<br />FILE *fout = fopen ("namenum.out", "w");<br />int i;<br />int flag = 0;<br />int len;<br />fscanf (fin1, "%s", &s);<br />len = strlen(s);<br />assert(len <= 12);<br />while(fscanf(fin2, "%s", name) != EOF)<br />{<br />if(strlen(name) == len)<br />{<br />int flg = 0;<br />for(i = 0; i < len && !flg; i++)<br />{<br />if(alpha[name[i]-'A'] != s[i])<br />{<br />flg = 1;<br />}<br />}<br />if(!flg)<br />{<br />fprintf (fout, "%s/n", name);<br />flag = 1;<br />}<br />}<br />}</p><p>if(!flag)<br />{<br />fprintf (fout, "NONE/n");<br />}<br />fclose(fin1);<br />fclose(fin2);<br />fclose(fout);<br />exit(0);<br />}<br />