注意这里切不可使用基本的数据类型来处理,甭管什么double,long long都无法处理10的100次方。应该是用数组来处理,后面的就比较简单了。
#include<stdio.h>
#include<math.h>
#define M 105
int main()
{
char n[M];
scanf("%s",n);
int i;
int sum=0;
int temp,d;
int cnt=0;
int mask;
for(i=0;n[i]!='\0';i++)
{
sum+=(n[i]-'0');
}
temp=sum;
while(temp!=0)
{
temp/=10;
cnt++;
}
mask=pow(10,cnt-1);
while(mask>0)
{
d=sum/mask;
sum%=mask;
switch (d)
{
case 0:printf("ling");break;
case 1:printf("yi");break;
case 2:printf("er");break;
case 3:printf("san");break;
case 4:printf("si");break;
case 5:printf("wu");break;
case 6:printf("liu");break;
case 7:printf("qi");break;
case 8:printf("ba");break;
case 9:printf("jiu");break;
}
if(mask>=10)
{
printf(" ");
}
mask/=10;
}
}