AlenaNuna

导航

HJ42 学英语

给你一个数字,输出它的英文单词

预处理特殊数字和基本数字

然后就特判有没有1e6以上,有没有1e3以上,……

有就去掉后面的6位数或者3位数,然后用扔子函数里当3位数处理了

我连forty和ninety都写错。。。。。。。。= =

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 string w[20],v[20],p[10];
 4 int n;
 5 void init(){
 6     w[1]="one";
 7     w[2]="two";
 8     w[3]="three";
 9     w[4]="four";
10     w[5]="five";
11     w[6]="six";
12     w[7]="seven";
13     w[8]="eight";
14     w[9]="nine";
15     w[10]="ten";
16     w[11]="eleven";
17     w[12]="twelve";
18     w[13]="thirteen";
19     w[14]="fourteen";
20     w[15]="fifteen";
21     w[16]="sixteen";
22     w[17]="seventeen";
23     w[18]="eighteen";
24     w[19]="nineteen";
25     v[2]="twenty";
26     v[3]="thirty";
27     v[4]="forty";
28     v[5]="fifty";
29     v[6]="sixty";
30     v[7]="seventy";
31     v[8]="eighty";
32     v[9]="ninety";
33     p[0]="and";
34     p[1]="hundred";
35     p[2]="thousand";
36     p[3]="million";
37     p[4]="billion";
38     return;
39 }
40 void Work(int x){
41     if(x/100){
42         cout<<w[x/100]<<" "<<p[1]<<" ";
43         x%=100;
44         if(x>0)cout<<p[0]<<" ";
45     }
46     if(x>0&&x<=19) {
47         cout<<w[x]<<" ";
48         return;
49     }
50     if(x==0)return;
51     cout<<v[x/10]<<" ";
52     x%=10;
53     if(x) cout<<w[x]<<" ";
54     return;
55 }
56 int main(){
57     init();
58     cin>>n;
59     if(n>=1000000){
60         Work(n/1000000);
61         n%=1000000;
62         cout<<p[3]<<" ";
63 //        if(n) printf("and ");
64     }
65     if(n>=1000){
66         Work(n/1000);
67         n%=1000;
68         cout<<p[2]<<" ";
69 //        if(n) printf("and ");
70     }
71     if(n>0){
72         Work(n);
73     }
74     return 0;
75 }

 

posted on 2024-09-02 20:01  AlenaNuna  阅读(7)  评论(0编辑  收藏  举报