2016.3.18华为上机题:拼音转数字

来源:互联网 发布:程序员演讲稿 编辑:程序博客网 时间:2024/04/19 10:17

这是第三题。。。

第二题为2015年的题目:洞穴逃生,参考本人博客列表。。

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

拼音        

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;
char * pinyinTonum(char* a,char *p)
{
int i=0,j=0;
char temp='\0';
while(*(a+i)!='\0')
{
switch(*(a+i))
{
case 'y': 
temp='1';
i += 2;
break;
case 'e':
  temp='2';
i += 2;
break;
case 's': 
if(*(a+i+1) == 'a')
{
temp='3';
i += 3;
break;
}
  else if(*(a+i+1)== 'i')
  {
      temp='4';
  i += 2;
  break;
}
case 'w': 
temp='5';
i += 2;
break;
case 'l': 
temp='6';
i += 3;
break;
case 'q': 
temp='7';
i += 2;
break;
case 'b':
temp='8';
i += 2;
break;
case 'j':
temp='9';
i += 3;
break;
default:
cout<<"error"<<endl;
break;
}
      *(p+j)=temp;
 j++;
}


*(p+j)='\0';
return p;
}


int main()
{
  char a[100];
  char *p=a;
  cin>>a;
  p=pinyinTonum(a,p);
  if(*p)
  cout<<p<<endl;
  return 0;


}


0 0
原创粉丝点击