Translate a number into an english statement. 翻译一个数字成英文句子
例如:
1234567890
输出:
one billion two hundred thirty four million five hundred sixty seven thousand eight hundred ninety
提示:使用指针数组
#include <stdio.h>
char *x[] = { "zero","one","two","three","four","five","six","seven","eight","nine" };
char *y[] = { " ","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen" };//加“ ”空格的原因,方便编写程序,因为索引是从0开始的
char *z[] = { " ","ten","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety" };
void inhundred(int num);
void inthousand(int num); //函数声明
void inthousand(int num)
{
if (num / 100 == 0)
{
inhundred(num);
}
else
{
printf("%s hundred", x[num / 100]);
if (num % 100 == 0) {}//整百的情况
else
{
printf(" ");
inhundred(num % 100);
}
}
return 0;
}
void inhundred(int num)
{
if (num / 10 == 0) //1-9的情况
{
printf("%s", x[num]);
}
else if(num/10==1) //10,11-19的情况
{
if (num % 10 == 0) //10的情况,条件可以改成num==10
{
printf("%s", z[1]);//或printf("ten");
}
else
{
printf("%s", y[num % 10]);//11-19
}
}
else //20,21...99;注意整十
{
printf("%s", z[num / 10]);
if (num % 10 == 0) {} //整十
else
{
printf(" %s", x[num % 10]);
}
}
return 0;
}
int main()
{
long long int num;
scanf_s("%lld", &num);
//printf("%lld", num);
int i = 0;
if (num == 0)
{
printf("%s", x[0]);
}
else
{
if (num >= 1000000000)
{
inthousand(num / 1000000000);
printf(" billion ");
if (num % 1000000000 == 0) //整十亿
{
return 0;
}
num = num % 1000000000;
}
if (num >= 1000000)
{
inthousand(num / 1000000);
printf(" million ");
if (num % 1000000 == 0)//整百万
{
return 0;
}
num = num % 1000000;
}
if (num >= 1000)
{
inthousand(num / 1000);
printf(" thousand ");
if (num % 1000 == 0)//整千
{
return 0;
}
num = num % 1000;
}
if (num < 1000)
{
inthousand(num);
return 0;
}
}
return 0;
}