【PAT甲级】1082 Read Number in Chinese (25 分)

题意:

输入一个九位整数,输出它的汉字读法(用拼音表示)。

trick:

字符串数组""其实会输出一个空格,而不是什么都不输出,导致测试点0和4格式错误。

AAAAAccepted code:

 1 #define HAVE_STRUCT_TIMESPEC
 2 #include<bits/stdc++.h>
 3 using namespace std;
 4 int num[17];
 5 string united[17]={"","yi","er","san","si","wu","liu","qi","ba","jiu"};
 6 string unit[17]={"","","Shi","Bai","Qian","Wan","Shi","Bai","Qian"};
 7 int main(){
 8     ios::sync_with_stdio(false);
 9     cin.tie(NULL);
10     cout.tie(NULL);
11     int x;
12     cin>>x;
13     if(x<0){
14         cout<<"Fu ";
15         x=-x;
16     }
17     else if(x==0){
18         cout<<"ling";
19         return 0;
20     }
21     int tamp=1;
22     for(int i=1;i<=8;++i)
23         tamp*=10;
24     for(int i=9;i;--i){
25         num[i]=x/tamp;
26         x%=tamp;
27         tamp/=10;
28     }
29     int space=0;
30     if(num[9])
31         cout<<united[num[9]]<<" Yi",space=1;
32     int pos=0;
33     for(int i=8;i;--i)
34         if(num[i]){
35             pos=i;
36             break;
37         }
38     int ling=0;
39     if(num[9]&&pos<8)
40         ling=1;
41     for(int i=pos;i;--i){
42         if(num[i]){
43             if(space)
44                 cout<<" ",space=0;
45             if(ling)
46                 cout<<"ling",ling=0,space=1;
47             if(space)
48                 cout<<" ",space=0;
49             cout<<united[num[i]],space=1;
50             if(i!=5&&i!=1){
51                 if(space)
52                     cout<<" ",space=0;
53                 cout<<unit[i],space=1;
54             }
55         }
56         else if(!ling&&i!=5)
57             ling=1;
58         if(i==5){
59             if(space)
60                 cout<<" ",space=0;
61             cout<<"Wan",space=1;
62         }
63     }
64     return 0;
65 }
保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
原文地址:https://www.cnblogs.com/ldudxy/p/11865893.html