【问题描述】
给定一个阿拉伯数字串,你帮他按照中文读写的规范转为汉语拼音字串,相邻的两个音节用一个空格符格开。
【解决过程】
代码如下:
#include<iostream>
#include<string>
using namespace std;
string ans,temp,
zh_num[]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"},
zh_unit[]={"shi","bai","qian","wan","yi"};
int first=1;
void add(string s){
if(first) first=0;
else temp+=' ';
temp+=s;
}
int main(){
int n;
cin>>n;
int digit,k=0;
while(n){
digit=n%10000;
n/=10000;
first=n?0:1;
int a=digit/1000,b=digit/100%10,c=digit%100/10,d=digit%10;
//cout<<a<<b<<c<<d;
if(a){
add(zh_num[a]);
add(zh_unit[2]);
}
if(n&&digit&&(!a||a+b==0||a+b+c==0)) add(zh_num[0]);
if(b){
add(zh_num[b]);
add(zh_unit[1]);
}
if(a&&!b&&d) add(zh_num[0]);
if(c){
if(c==1){
if(n||(a||b)) add(zh_num[c]);
}else add(zh_num[c]);
add(zh_unit[0]);
}
if(b&&!c&&d) add(zh_num[0]);
if(d){
add(zh_num[d]);
}
if(k&&digit) add(zh_unit[2+k]);
++k;
ans=temp+ans;
temp.clear();
}
cout<<ans<<endl;
return 0;
}