2014年7月华为校招机试真题3

来源:互联网 发布:java list遍历 编辑:程序博客网 时间:2024/04/29 01:10

拼音转数字

输入是一个只包含拼音的字符串,请输出对应的数字序列。转换关系如下:

描述:      拼音        yi  er  san  si  wu  liu  qi  ba  jiu

      阿拉伯数字        1   2   3      4   5    6    7   8   9

输入字符只包含小写字母,所有字符都可以正好匹配


运行时间限制:无限制

内存限制:       无限制

输入:              一行字符串,长度小于1000

输出:              一行字符(数字)串

样例输入:       yiersansi

样例输出:       1234


#include<iostream>using namespace std;bool strtonum (const char *a , char *b){if (a == NULL || b == NULL){return false;}int i = 0;int j = 0;while(a[i] != '\0'){//yi er san si wu liu qi ba jiuswitch (a[i]){case 'y':if (a[i+1] != 'i'){return false;}i+=2;b[j++] = '1';break;case 'e':if (a[i+1] != 'r'){return false;}i+=2;b[j++] = '2';    break;case 's':if (a[i+1] == 'a'){if (a[i+2] != 'n'){return false;}    i+=3;b[j++] = '3';break;}else {if (a[i+1] != 'i'){return false;}i+=2;b[j++] = '4';break;}case 'w':if (a[i+1] != 'u'){return false;}i+=2;b[j++] = '5';break;case 'l':if (a[i+1] != 'i'){return false;}else{if (a[i+2] != 'u'){return false;}i+=3;b[j++] ='6';break;}case 'q':if (a[i+1] != 'i'){return false;}i+=2;b[j++] = '7';break;case 'b':if (a[i+1] != 'a'){return false;}i+=2;b[j++] = '8';break;case 'j':if (a[i+1] != 'i'){return false;}else{if (a[i+2] != 'u'){return false;}    i+=3;    b[j++] = '9';    break;}default:return false;}}b[j] = '\0';return true;}int main(){while(1){cout << "一行字符串,长度小于1000:\n";    char a[1000];//strcpy(a,"eryiersansiwuliuqibajiusanbajiuqi");gets(a);if (a == NULL ){continue;}if (strlen(a) == 1000){cout << "请输入一行长度小于1000的字符串:\n";continue;       }char b[256]=" ";if (strtonum(a,b)){cout <<"输入前的一行数字串:\n";int i = 0; while (a[i] != '\0'){cout << a[i];++i;}cout <<"\n转换后的一行数字串:\n";i = 0;while (b[i] != '\0'){cout << b[i];++i;}cout << endl; }else{cout <<" 请输出的字符串存在错误字符 " << endl;} }return 0;}


测试结果:不考虑输入是大写!


0 0
原创粉丝点击