读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于2^64。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:1234567890987654输出样例:
ba si
NOTE:当数值超过2^63时一般使用char类型接收,unsigned long long 表示范围 0 ~18446744073709551615
// // Created by Zhxc on 2018. // #include <iostream> #include <string> #include <cstdlib> using namespace std; string table[] = { "ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu" }; //递归得到数字的每一位相加的和 unsigned long long fcn2(unsigned long long n){ if (n < 10) return n; return (n % 10) + fcn2(n / 10); } //递归得到数字的每一位相加的和的拼音表示 string fcn3(unsigned long long n){ if (n < 10) return table[n]; return (n / 10 == 0) ? (fcn3(n / 10) + table[n % 10]) : (fcn3(n / 10) + " " + table[n % 10]); } int main(){ unsigned long long n = 1234567890987654; cout << fcn2(n) << endl; cout << fcn3(fcn2(n)) << endl; system("pause"); return 0; }