华为机试题之拼音转数字
2016-06-11 18:51
381 查看
输入是一个只包含拼音的字符串,请输出对应的数字序列。转换关系如下:
描述: 拼音 yi er san si wu liu qi ba jiu
阿拉伯数字 1 2 3 4 5 6 7 8 9
输入字符只包含小写字母,所有字符都可以正好匹配
运行时间限制:无限制
内存限制: 无限制
输入: 一行字符串,长度小于1000
输出: 一行字符(数字)串
样例输入: yiersansi
样例输出: 1234
解法一(C++)
已经运行通过,这里思路就是根据yi er san si wu liu qi ba jiu 首字母的不同来判断,其中要注意san 和si首字母相同,所以要判断一下。
描述: 拼音 yi er san si wu liu qi ba jiu
阿拉伯数字 1 2 3 4 5 6 7 8 9
输入字符只包含小写字母,所有字符都可以正好匹配
运行时间限制:无限制
内存限制: 无限制
输入: 一行字符串,长度小于1000
输出: 一行字符(数字)串
样例输入: yiersansi
样例输出: 1234
解法一(C++)
#include<iostream> using namespace std; void convert(char *str) { int i; int length; length = strlen(str); for(i = 0 ; i < length ; ) { switch(str[i]) { case 'y': cout<<"1"; i += 2; break; case 'e': cout<<"2"; i += 2; break; case 's': if(str[i + 1] == 'a') { cout<<"3"; i += 3; } else { cout<<"4"; i += 2; } break; case 'w': cout<<"5"; i += 2; break; case 'l': cout<<"6"; i += 3; break; case 'q': cout<<"7"; i += 2; break; case 'b': cout<<"8"; i += 2; break; case 'j': cout<<"9"; i += 3; break; } } printf("\n"); } int main() { char str[255]; while(cin>>str) { convert(str); } return 0; }
已经运行通过,这里思路就是根据yi er san si wu liu qi ba jiu 首字母的不同来判断,其中要注意san 和si首字母相同,所以要判断一下。
相关文章推荐
- 实现memcpy和memmove函数
- C++之虚继承
- AdapterView适配器
- 编码(NRZ、NRZI、曼彻斯特、4B
- 将两个数组中的内容进行交换(数组一样大)
- C语言 在屏幕上输出菱形图案
- C语言 求出100~999之间的所有“水仙花数”并输出
- 从两端动态输出一串字符
- 折半查找
- 编写猜数字游戏
- 标准输入每行,加行号输出
- 五人预测比赛结果均答对一半,求比赛名次
- 在屏幕上打印杨辉三角
- 创建一个数组,实现初始化、逆置和清空
- 棋盘游戏
- 编写一个函数,它从一个字符串中提取一个子字符串
- C语言:编写strcpy函数
- 两个整数二进制表达中,有多少个位(bit)不同
- 编写函数返回值value的二进制模式从左到右翻转后的值
- 一组数据中只有一个数字出现一次,其他数成对出现,找出这个数