比较简单的一题,主要是测点不坑,都是正常的规范的数字。
格式控制用了一个小trick,所有的单词后都加了一个空格,然后用string ans来保存。输出时只输出ans前 ans.size()-1 个字符即可,这样最后就不会有空格了。
下面贴上AC代码
#include<stdio.h> #include<string> #include<string.h> using namespace std; string digits[10] = { "ling","yi","er","san","si","wu","liu","qi","ba","jiu" }; string unit[6] = { "","Shi ","Bai ","Qian ","Wan ","Yi " }; int main() { char input[11]; string ans = ""; scanf("%s", input); if (strlen(input) == 1 && input[0] == '0') { ans = "ling "; } else { for (int i = 0; i < strlen(input); i++) { if (input[i] == '-') { ans += "Fu "; continue; } else if (input[i] != '0') { if (i > 0 && input[i - 1] == '0') { ans += "ling "; } ans += digits[input[i] - '0'] + " " + unit[(strlen(input) - i - 1) % 4]; } if ((strlen(input) - i - 1) % 4 == 0 && i != strlen(input) - 1) { ans += unit[(strlen(input) - i - 1) / 4 + 3]; } } } printf("%s", ans.substr(0, ans.size() - 1).c_str()); return 0; }