描述
自然数翻译成英文表示方式。
水一期^_^
#include <iostream>
#include <cstring>
using namespace std;
class robot
{
public:
void out(int a);
void tran_int(int n);
~robot(){};
};
char *num1[]=
{
"","one","two","three","four","five","six","seven","eight",
"nine","ten","eleven","twelve","thirteen","fourteen",
"fifteen","sixteen","seventeen","eighteen","nineteen"
};
char *num10[]=
{
"","","twenty","thirty","forty","fifty","sisty","seventy",
"eighty","ninety"
};
void robot::out(int a)
{
int b=a%100;
if(a/100!=0)
{
cout<<num1[a/100]<<" hundred ";
if(b!=0)
cout<<"and ";
}
if(b<20)
{
cout<<num1[b];
}
else
{
cout<<num10[b/10];
if(b%10!=0)
cout<<"-"<<num1[b%10];
}
}
void robot::tran_int(int n)
{
if(n>1999999999)
cout<<"无法处理大于1999999999位的数!"<<endl;
else
{
int a=n/1000000000,b=(n%1000000000)/1000000,c=(n%1000000)/1000,d=n%1000;
if(a!=0)
{
out(a);
cout<<" billion ";
}
if(b!=0)
{
out(b);
cout<<" million ";
}
if(c!=0)
{
out(c);
cout<<" thousand ";
}
if(d!=0)
{
if(d<100&&(a!=0||b!=0||c!=0))
cout<<"and ";
out(d);
}
cout<<endl;
}
}
int main()
{
int n;
cin>>n;
robot a;
a.tran_int(n);
return 0;
}