
#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
string str;
cin>>str;
int num,flag=0,a[1000],t;
for(int i=0;i<str.length();i++)
{
num+=str[i]-48;
}//求和;
for(int i=0;num!=0;i++)//将每一位上的数字放到数组a[]里面 ;
{
t=num;
t%=10;
a[i]=t;
num/=10;
flag++;
}
// for(int i=0;i<flag;i++)
// {
// printf("%d\n",a[i]);
// }//检验数据是否符合预期,此部分内容与题解无直接关系
while(flag>0)
{
switch(a[flag-1])
{/*之前见过最后一个字符后面不加空格的简单表达,但是此刻暂时没想到,就用了最笨的if语句来表达*/
case 0 : if(flag==1) printf("ling");else printf("ling "); flag--;break;
case 1 : if(flag==1) printf("yi");else printf("yi ");flag--;break;
case 2 : if(flag==1) printf("er");else printf("er ");flag--;break;
case 3 : if(flag==1) printf("san");else printf("san ");flag--;break;
case 4 : if(flag==1) printf("si");else printf("si ");flag--;break;
case 5 : if(flag==1) printf("wu");else printf("wu ");flag--;break;
case 6 : if(flag==1) printf("liu");else printf("liu ");flag--;break;
case 7 : if(flag==1) printf("qi");else printf("qi ");flag--;break;
case 8 : if(flag==1) printf("ba");else printf("ba ");flag--;break;
case 9 : if(flag==1) printf("jiu");else printf("jiu ");flag--;break;
}
// num/=10;
}
// printf("%d\n",num);
return 0;
}
关键点:
1、各位数字放进数组之后,倒序输出,用flag进行辅助;
2、最后一个字符后无空格,不按照要求会致错。