您的位置:首页 > 其它

华为上机—电话号码翻译

2014-10-01 23:24 239 查看
这是华为的一道上机题,上网搜了一下大神写的,发现很乱,没看懂,于是自己写了个,编译已运行通过(vs2010)若有问题,还望留言!
/*将 电话号码 one two 。。。nine zero 翻译成1  2 。。9 0 中间会有double例如输入:OneTwoThree	输出:123输入:OneTwoDoubleTwo	输出:1222输入:1Two2				输出:ERROR输入:DoubleDoubleTwo	输出:ERROR有空格,非法字符,两个Double相连,Double位于最后一个单词都错误*/#include <stdio.h>#include <stdlib.h>#include <string.h>#define N	10000void translate_num(char *src, char (*index_num)[10]);int main (int argc, char **){char table_num[11][10] = {"zero", "one", "two", "three", "four","five", "six", "seven", "eight", "nine","double"};//char *src = "onethreesevenoneeightfivetwonineeightseventwo";char src= "\0";printf("input the phonon number:\n");scanf("%s", src);char (*p)[10];p = table_num;translate_num(src, p);system("pause");return 0;}void translate_num(char *src, char (*index_num)[10]){if (nullptr == src){printf("error!\n");return;}for (int i = 0; i < strlen(src); i ++){if (src[i] < 'A' ||(src[i] > 'Z' && src[i] < 'a') ||src[i] > 'z'){printf("error!\n");return;}}if (0 == strncmp(src+0, *(index_num+10), 6) ||0 == strncmp(src+strlen(src)-1-6, *(index_num+10), 6)){printf("error!\n");return;}int dst= {11};int dst_index = 0;for (int i = 0; i < strlen(src);){switch(src[i]){case 'Z':case 'z':if (0 == strncmp(src+i, *(index_num+0), 4)){dst[dst_index++] = 0;i += 4;}break;case 'O':case 'o':if (0 == strncmp(src+i, *(index_num+1), 3)){dst[dst_index++] = 1;i += 3;}break;case 'T':case 't':if (0 == strncmp(src+i, *(index_num+2), 3)){dst[dst_index++] = 2;i += 3;}else if (0 == strncmp(src+i, *(index_num+3), 5)){dst[dst_index++] = 3;i += 5;}break;case 'F':case 'f':if (0 == strncmp(src+i, *(index_num+4), 4)){dst[dst_index++] = 4;i += 4;}else if (0 == strncmp(src+i, *(index_num+5), 4)){dst[dst_index++] = 5;i += 4;}break;case 'S':case 's':if (0 == strncmp(src+i, *(index_num+6), 3)){dst[dst_index++] = 6;i += 3;}else if (0 == strncmp(src+i, *(index_num+7), 5)){dst[dst_index++] = 7;i += 5;}break;case 'E':case 'e':if (0 == strncmp(src+i, *(index_num+8), 5)){dst[dst_index++] = 8;i += 5;}break;case 'N':case 'n':if (0 == strncmp(src+i, *(index_num+9), 4)){dst[dst_index++] = 9;i += 4;}break;case 'D':case 'd':if (0 == strncmp(src+i, *(index_num+10), 6)){dst[dst_index++] = dst[dst_index-1];i += 6;}if (0 == strncmp(src+i, *(index_num+10), 6)){printf("error!\n");return;}break;}}printf("电话号码为:\n");for (int i = 0; i < dst_index; i ++){printf("%d", dst[i]);}printf("\n");}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: