#include <iostream>
using namespace std;
int number[9];
char a[10][5]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
char b[8][5]={"Yi","Qian","Bai","Shi","Wan","Qian","Bai","Shi"};
void Print(int n,int i)
{
static int printCount=0;
static bool flag=false;
if(n!=0)
{
if(printCount!=0)
printf(" ");
printCount++;
if(flag==true)
printf("ling ");
flag=false;
if(i<8)
printf("%s %s",a[n],b[i]);
else
printf("%s",a[n]);
}
else
{
if(i==4&&(number[1]!=0||number[2]!=0||number[3]!=0||number[4]!=0))
{
printf(" Wan");
flag=false;
return;
}
if(i==8)
return;
flag=true;
}
}
int main()
{
int N,i,j;
scanf("%d",&N);
if(N<0)
{
N=-N;
printf("Fu ");
}
if(N==0)
{
printf("ling");
return 0;
}
for(i=0,j=100000000;i<9;j/=10,i++)
number[i]=(N/j)%10;
for(i=0;i<9;i++)
if(number[i]!=0)
break;
for(;i<9;i++)
Print(number[i],i);
return 0;
}
这道题要注意的点有很多:
1.如果是0,直接输出ling。
2.连续的0只读一个ling。
3.万位的0,个位的0不读。
博客写到一半被女朋友打断了。。。。。。。。然后思路。。。下次再补吧。