题目地址:https://pintia.cn/problem-sets/994805260223102976/problems/994805324509200384ios
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。测试
每一个测试输入包含 1 个测试用例,即给出天然数 n 的值。这里保证 n 小于10的100次方。spa
在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。调试
1234567890987654321123456789
yi san wu
由于天然数n可能为很大的数字,因此使用字符串接受输入,而后遍历每一个字符,相加得出各位数字之和,计算和以后须要再转化为字符串,而后根据数字与汉语拼音的映射输出便可。code
#include <iostream> #include <string> #include <stdlib.h> #include <sstream> using namespace std; int main(int argc, char** argv) { string seq; int number = 0; string map[] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"}; cin >> seq; // 计算各位数字之和 for (char i : seq) { number += i - 48; } stringstream ss; ss << number; // 将数字之和转化为字符串 string result = ss.str(); // 映射输出汉语拼音 int length = result.length(); for (int i = 0; i < length; i++){ cout << map[result[i] - 48]; if (i != length-1 ){ cout << " "; } } }