https://pintia.cn/problem-sets/994805342720868352/problems/994805385053978624
寫的太垃圾,不想詳細說,等有時間再寫一個簡潔的方法。
最討厭的就是這個模擬題。
說一下我的處理空格的一些想法,直接用字符串連接,然后字符串流輸出,這樣可以處理多余的或少的空格。
#include<bits/stdc++.h>
using namespace std
;
string s
;
string a
[10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
string b
[10]={"ling","","Shi","Bai","Qian","Wan","Shi","Bai","Qian","Yi"};
bool flag1
,flag2
,flag3
,flag22
,flag33
;
string ans
;
int main(void)
{cin
>>s
;if(s
=="0") {puts("ling");return 0;}if(s
[0]=='-') ans
+="Fu ",s
=s
.substr(1);while(s
.size()<9) s
="0"+s
;string temp
=s
.substr(0,1);if(temp
[0]!='0') ans
+=" "+a
[temp
[0]-'0']+" Yi ",flag1
=1;temp
=s
.substr(1,4);bool index
=0;flag22
=flag1
;for(int i
=0,j
=4;i
<4;i
++,j
--){int u
=temp
[i
]-'0';if(!u
) index
=1;if(u
&&index
&&flag22
&&temp
[i
-1]=='0') ans
+=" ling ";if(u
) ans
+=" "+a
[u
]+" "+b
[j
]+" ",flag22
=1,flag2
=1;}if(flag2
) ans
+=" Wan ";temp
=s
.substr(5,4);index
=0;flag33
=flag22
;for(int i
=0,j
=4;i
<4;i
++,j
--){int u
=temp
[i
]-'0';if(!u
) index
=1;if(u
&&index
&&flag33
&&temp
[i
-1]=='0') ans
+=" ling ";if(u
) ans
+=" "+a
[u
]+" "+b
[j
]+" ",flag33
=1;}string x
; stringstream
l(ans
);vector
<string
>ve
;while(l
>>x
) ve
.push_back(x
);for(int i
=0;i
<ve
.size();i
++){cout
<<ve
[i
];if(i
!=ve
.size()-1) cout
<<" ";}return 0;
}
總結
以上是生活随笔為你收集整理的1082 Read Number in Chinese (25 分)【难 / 模拟 字符串】的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。