题解 | #学英语#
学英语
https://www.nowcoder.com/practice/1364723563ab43c99f3d38b5abef83bc
英语成为了最大的BUG 改了好多次单词拼写。。。
#include <stdio.h>
#include <stdlib.h>
char biao1[][20]={"","one","two","three","four","five","six","seven","eight","nine",\
"ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen",\
"eighteen","nineteen"};
char biao2[][20]={"","","twenty","thirty","forty","fifty","sixty","seventy","eighty",\
"ninety"};
char biao3[][20]={"billion","million","thousand","hundred","and"};
void shuchu(int outcnt,char** output)
{
for(int i=0;i<outcnt;i++)
printf("%s ",output[i]);
}
void small1000(int weishu,char* place)
{
int outcnt=0;
char * output[10];
if(weishu==3)
{
output[outcnt++]=biao1[place[weishu-1]];
output[outcnt++]=biao3[3];
shuchu(outcnt,output);
if(place[1] || place[0])
printf("and ");
else
{
//shuchu(outcnt,output);
return;
}
outcnt=0;
if (place[1]>1)
{
output[outcnt++]=biao2[place[1]];
if (place[0])
{
output[outcnt++]=biao1[place[0]];
}
}
else
{
output[outcnt++]=biao1[place[1]*10+place[0]];
}
shuchu(outcnt,output);
return ;
}
else if(weishu==2)
{
if (place[1]>1)
{
output[outcnt++]=biao2[place[1]];
if (place[0])
{
output[outcnt++]=biao1[place[0]];
}
}
else
{
output[outcnt++]=biao1[place[1]*10+place[0]];
}
shuchu(outcnt,output);
return ;
}
else
{
printf("%s ",biao1[place[0]]);
}
}
int main()
{
long int x=0;
scanf("%d",&x);
int temp=0;
int dc=0;
char* output[50]={0};
char place[10]={0};
int weishu=0;
int outcnt=0;
while(x)
{
place[weishu++]=x%10;
x=x/10;
}
if(weishu==7)
{
output[outcnt++]=biao1[place[weishu-1]];
output[outcnt++]=biao3[1];
for (int i=5;i>=0;i--)
{
if (place[i])
{
weishu=i+1;
break;
}
}
if (weishu==7)
{
//后面全是0
shuchu(outcnt,output);
return 0;
}
shuchu(outcnt,output);
outcnt=0;
}
if(weishu>3 && weishu<7)
{
small1000(weishu-3, place+3);
printf("thousand ");
temp=weishu;
for (int i=2;i>=0;i--)
{
if (place[i])
{
weishu=i+1;
// printf("and ");
break;
}
}
if (temp==weishu)
{
return 0;
}
}
small1000(weishu,place);
}
