Given an integer with no more than 9 digits, you are supposed to read it in the traditional Chinese way. Output Fu
first if it is negative. For example, -123456789 is read as Fu yi Yi er Qian san Bai si Shi wu Wan liu Qian qi Bai ba Shi jiu
. Note: zero (ling
) must be handled correctly according to the Chinese tradition. For example, 100800 is yi Shi Wan ling ba Bai
.
Input Specification:
Each input file contains one test case, which gives an integer with no more than 9 digits.
Output Specification:
For each test case, print in a line the Chinese way of reading the number. The characters are separated by a space and there must be no extra space at the end of the line.
Sample Input 1:
-123456789
Sample Output 1:
Fu yi Yi er Qian san Bai si Shi wu Wan liu Qian qi Bai ba Shi jiu
Sample Input 2:
100800
Sample Output 2:
yi Shi Wan ling ba Bai
参考代码:
#include<cstdio>
#include<cstring>
char num[10][5] ={"ling", "yi", "er", "san", "si", "wu", "liu",
"qi", "ba", "jiu"};
char wei[5][5] ={"Shi", "Bai", "Qian", "Wan", "Yi"};
const int MANX = 15;
char s[MANX];
int main(int argc, char const *argv[])
{
fgets(s, 16, stdin);
int len = strlen(s) - 1;//fgets会多读入一个换行符
int left = 0;
int right = len - 1;
if(s[0] == '-'){
printf("Fu");
left++;
}
while(left + 4 <= right){//让left和right在同一字节,四位为一个字节
right -= 4;
}
int count = 0;
while(left < len){
bool flag = false;//有无累计字节
bool isPrintf = false;//该字节有无输出
while(left <= right){//从左向右输出字节每一位
if(s[left] == '0' && left > 0){//left > 0 是为了当只有一个零的时候,输出零
flag = true;
count++;//统计有无一个字节四个都为零的情况
}else{
if(flag == true ){//如果存在累计零
printf(" ling");
flag = false;
}
if(left > 0) printf(" ");//不是第一位,则输出空格
printf("%s", num[s[left] - '0']);//输出当前位
isPrintf = true;//该节至少有一个被输出
if(right != left){//该节除了个位外,都要输出十百千
printf(" %s", wei[right - left - 1]);
}
}
left++;//右移一位
}
if(isPrintf == true && right != len - 1){//该字节有输出,且只要不是个位,就输出万或者亿
printf(" %s", wei[(len - right - 1) / 4 + 2]);
}
if(count == 4 && s[right + 1] != '0' && right != len - 1){//当上一个字节都为零,该字节第一个不为零时,输出零
printf(" ling");
}
right += 4;
count = 0;
}
printf("\n");
return 0;
}