华为机试

1~9的拼音是yi,er,san,......jiu

在一个字符串中把1~9的拼音翻译成阿拉伯数字

  1. //vs2005  
  2.   
  3. #include "stdafx.h"  
  4. #include <string>  
  5. #include <iostream>  
  6. using namespace std;  
  7.   
  8. void filter(string str)  
  9. {  
  10.         //各字符串的下标即为其对应的阿拉伯数字  
  11.     char *ch[]={"0","yi","er","san","si","wu","liu","qi","ba","jiu"};  
  12.     int i,j,k,len;  
  13.     string substr;  
  14.     len=str.length();  
  15.     //printf("%d\n",len);  
  16.     for(i=0;i<len;i++)  
  17.     {  
  18.   
  19.                 //可以看出拼音最短为2个字符,最长为3个字符  
  20.         for(j=i+1;j<len&&(j-i)<3;j++)  
  21.         {  
  22.             substr=str.substr(i,j-i+1);  
  23.             //cout<<substr<<endl;  
  24.                         //取子串与各数字的拼音比较  
  25.             for(k=1;k<10;k++)  
  26.               
  27.                 if(!substr.compare(ch[k]))  
  28.                 {  
  29.                     printf("%d\n",k);//相等则打印出数字  
  30.                     break;  
  31.                 }                 
  32.               
  33.         }  
  34.               
  35.           
  36.     }  
  37. }  
  38.   
  39. int _tmain(int argc, _TCHAR* argv[])  
  40. {  
  41.     string str;  
  42.     cout<<"enter a string:"<<endl;  
  43.     char ch1=' ';  
  44.     while(ch1!='\n')  
  45.     {  
  46.         cin>>str;  
  47.         ch1=getchar();  
  48.     }  
  49.     filter(str);  
  50.     return 0;  

原文地址:点击打开链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值