10^100肯定不能用int long long 定义一个字符数组保存 char num[101]!
#include<iostream>
#include<cstring>
using namespace std;
void Printing(int k)
{
switch(k)
{
case 0:cout<<"zero";break;
case 1:cout<<"one";break;
case 2:cout<<"two";break;
case 3:cout<<"three";break;
case 4:cout<<"four";break;
case 5:cout<<"five";break;
case 6:cout<<"six";break;
case 7:cout<<"seven";break;
case 8:cout<<"eight";break;
case 9:cout<<"nine";break;
}
}
int main()
{
char num[100];
scanf("%s",num);
int i,sum=0,len,k;
len=strlen(num);
for(i=0;i<len;i++)
{
sum+=num[i]-'0';
}
if(sum==0)//此处不加这个判断会有浮点错误,测试用例00000000000000
{
cout<<"zero";
return 0;
}
for(i=1000000;sum/i==0;i=i/10);
for(;i;)
{
k=sum/i;
sum=sum%i;
Printing(k);
// if(i>1)
//cout<<' ';
cout<<(i>1?' ':'\0');
i=i/10;
}
return 0;
}