#include<iostream>
#include<string>
using namespace std;
string chi[20]={"读作天皇老子","yi","er","san","si","wu","liu","qi","ba","jiu"};//x 1-9
string teshuwei[20];
string wei[20]={"shi ","","qian ","bai ","shi ","","qian ","bai ","shi ",""};//0 - 10
//string num;
int speakLing(int which,string num)
{
if(num[which]!='0')return 0;//不是0
if(which==0 || which==1)return 1;//如果亿位 十亿位是0 那么不读ling
if(which==2)
{
if((num[3]!='0'||num[4]!='0'||num[5]!='0')&&(num[0]!='0'||num[1]!='0'))
cout<<"ling ";
return 1;
}
if(which==6)
{
if(num[7]!='0'||num[8]!='0'||num[9]!='0')
for(int i=0;i<6;i++)
{
if(num[i]!='0')
{
cout<<"ling ";
return 1;
}
}
return 1;
}
int R=0;
if(which<=5)R=5;
else R=9;
if(num[which-1]!='0')
{
for(int i=which+1;i<=R;i++)
{
if(num[i]!='0')
{
cout<<"ling ";//读ling的条件是前一个字符不是ling 后面有不是0的字符
return 1;
}
}
}
return 1;
}
void speaknum(string num)
{
int jie=0;//0阶段 未进化
string box="";
for(int i=0;i<10-num.length();i++)box+="0";
num=box+num;
for(int i=0;i<num.length();i++)
{
if(speakLing(i,num))//这一位是0 Ling函数就处理好了
{
;
}
else
{
if(num[i]=='1'&&(i==0 || i==4 || i==8) &&jie==0)
{
//10 读作shi 100000读作shi wan 1000000000读作shi yi (yi不读出来)
}
else
{
cout<<chi[num[i]-'0']<<" ";
}
cout<<wei[i]<<"";
jie=1;
}
//读出亿还有万
if(i==1 && (num[0]!='0' || num[1]!='0'))cout<<"yi "; //0010101010 0,1位有数据才读
if(i==5 && (num[5]!='0'|| num[4]!='0'|| num[3]!='0'|| num[2]!='0'))cout<<"wan "; //与上面类似
}
cout<<endl;
}
int main()
{
string num;
while(1)
{
cout<<"请输入小于12位的数: ";
cin>>num;
cout<<"读作: ";
if(num=="666")
{
cout<<"六六六"<<endl;
break;
}
speaknum(num);
cout<<endl;
}
return 0;
}