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:-123456789Sample Output 1:
Fu yi Yi er Qian san Bai si Shi wu Wan liu Qian qi Bai ba Shi jiuSample Input 2:
100800Sample Output 2:
yi Shi Wan ling ba Bai 思路:注意0的读法#include <stdio.h> #include <iostream> #include <string> #include <vector> using namespace std; int n; string list1[10] = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"}; string list2[10] = {"0","Shi","Bai","Qian","Wan","Shi","Bai","Qian","Yi","0"}; vector<string> res; int main() { while(scanf("%d", &n) != EOF) { res.clear(); int list[10]; int length = 0; if(n == 0) { printf("ling\n"); continue; } if(n < 0) { printf("Fu "); n = -n; } while(n > 0) { list[length] = n % 10; n = n / 10; length++; } int e = 0; while(list[e] == 0) { e++; } if(e == 8) { printf("%d Yi\n", list[8]); continue; } if(e > 4) { res.push_back("Wan"); } for(int i = e; i < length; i++) { if(i == 0) { res.push_back(list1[list[i]]); } else { if(list[i] != 0 || i == 4 || i == 8) { res.push_back(list2[i]); } res.push_back(list1[list[i]]); } } int cnt = 0; for(int i = res.size() - 1; i >= 0; i--) { if(i != res.size() - 1) { printf(" "); } cnt = 0; while(i >= 0 && res[i].compare("ling") == 0) { i--; cnt++; } if(cnt == 0) { cout << res[i]; } else if(cnt < 4) { if(res[i].compare("Wan") != 0) { printf("ling"); if(i != res.size() - 1) { printf(" "); } } cout << res[i]; } } printf("\n"); } return 0; }