大意:N<=10^10,所有位数相加,将结果每一位用英文输出
例:9999 9999 9 ----->81 ------->eight one
http://pat.zju.edu.cn/contests/pat-a-practise/1005
#include <stdio.h>
#include <string.h>
char num[10][10]=
{
{"zero"},
{"one"},
{"two"},
{"three"},
{"four"},
{"five"},
{"six"},
{"seven"},
{"eight"},
{"nine"},
};
int main()
{
int i,ans=0;
char a[105]; //N<=10^10,最多101位
scanf("%s",a); //大数,用字符串表示,保存在数组中
for (i=0;a[i]!=0;i++)
{
ans+=( a[i]-'0' ); //字符串转化为数字
}
if (ans==0) //0先处理
{
printf("zero\n");
return 0;
}
int q,size=1;
int b[5]={0};
while(ans) //辗转相除得到所有位,低位在前
{
q=ans%10;
b[size++]=q;
ans/=10;
}
int n=size-1; //size最终比实际位数大一位
for (i=n;i>0;i--)
{
if (--n)
{
printf("%s ",num[ b[i] ] );
}
else
{
printf("%s\n",num[ b[i] ]); //最后一次输出没有空格
}
}
return 0;
}