该程序实现将拼音转换成阿拉伯数字的功能。
如输入:WuShiWu
则输出:55
#include<cctype>
#include<iostream>
#include<string>
#include<map>
using namespace std;
int main()
{
string name[]={"Shi","Bai","Qian","Wan"};
string numchar[]={"Ling","Yi","Er","San","Si","Wu","Liu","Qi","Ba","Jiu"};
string input;
cin>>input;
int i,j=0,k,l,result=0,count;
string tmp[10];
char number[10];
for(i=0;i<input.size();)
{
count=0;
while(islower(input[i+1]))
{
count++;
i++;
}
tmp[j++]=input.substr(i-count,count+1);
i++;
}
for(i=0;i<j;i++)
{
for(k=0;k<10;k++)
{
if(tmp[i]==numchar[k])
{
number[i]=k+'0';
break;
}
}
if(k==10)
{
for(l=0;l<4;l++)
{
if(tmp[i]==name[l])
{
number[i]=name[l][0];
break;
}
}
}
}
map<char,int> icmap;
icmap['S']=10;
icmap['B']=100;
icmap['Q']=1000;
icmap['W']=10000;
for(i=0;i<j;i++)
{
if(isdigit(number[i])&&isupper(number[i+1]))
result+=(number[i]-'0')*icmap[number[i+1]];
}
if(isdigit(number[j-1]))
result+=number[j-1]-'0';
cout<<result<<endl;
return 0;
}