【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 }
保持热爱 不懈努力
不试试看怎么知道会失败呢(划掉)
世上无难事 只要肯放弃(划掉)