比较简单的一题,主要是测点不坑,都是正常的规范的数字。
格式控制用了一个小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;
}