#include<iostream>
#include<string>
using namespace std;
string b[10]={"ling ","yi ","er ","san ","si ","wu ","liu ","qi ","ba ","jiu "};
string func(string t){
int l=t.length();
string ans;
int flag=0;
if(l>=4){
ans+=b[t[0]-'0'];
ans+="qian ";
}
if(l>=3)
{
if(t[l-3]=='0')
{
if(t[l-2]=='0')
{
if(t[l-1]=='0')
{
return ans;
}
else
{
ans+="ling ";
flag=1;
}
}
else
{
ans+="ling ";
flag=1;
}
}
else
{
ans+=b[t[l-3]-'0'];
ans+="bai ";
}
}
if(l>=2){
if(t[l-2]=='0'&&flag==0)
{
if(t[l-1]=='0')
{
return ans;
}
else
{
ans+="ling ";
flag=1;
}
}
else if(t[l-2]!='0')
{
if(t[l-2]=='1')
{
if(l!=2)
{
ans+="yi shi ";
}
else
ans+="shi ";
}
else
{
ans+=b[t[l-2]-'0'];
ans+="shi ";
}
}
}
if(l>=1){
if(t[l-1]!='0'){
ans+=b[t[l-1]-'0'];//千万别忘了 减去'0',转化ASCI码
}
}
return ans;
}
int main(){
string num;
cin>>num;
int len=num.length();
if(len==10){
cout<<func(num.substr(0,2))<<"yi ";
}
if(len==9){
cout<<b[num[0]-'0']<<"yi ";
}
string sub;
int flag=0;//是否有非0数字
int flag2=0;//第二层检验
int time=0;//0是第几次出现
if(len>=5){
for(int i=len-8;i<len-4;i++){
if(i<0)continue;
if(time==0&&flag==0&&num[i]=='0'){
int c=0;
for(int j=i;j<len;j++)
{
if(num[j]!='0')
{
c=1;
break;
}
}
if(c==1)
cout<<"ling ";
time=1;
}
if(flag==0&&num[i]=='0'){
continue;
}
sub+=num[i];
flag=1;
}
if(flag==1){
cout<<func(sub)<<"wan ";
}
time=0;
sub="";
for(int i=len-4;i<len;i++){
if(flag==1&&flag2==0&&time==0&&num[i]=='0'){
cout<<"ling ";
time=1;
}
if(flag2==0&&num[i]=='0'){
continue;
}
sub+=num[i];
flag2=1;
}
}
if(len<=4){
sub=num;
flag2=1;
}
if(flag2==1){
cout<<func(sub);
}
return 0;
}
写了一万年
20.数的读法
猜你喜欢
转载自blog.csdn.net/qq_37910848/article/details/79533784
今日推荐
周排行