题目:
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
java参考答案:
import java.awt.List;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int sum = 0;
Scanner sc = new Scanner(System.in);
String s = sc.next();
//把输入的字符串转换成字符数组
char ch[] = s.toCharArray();
//遍历数组
for (char c : ch) {
//求和:把字符数组中的字符先转换成字符串,在将字符串转成int类型
sum += Integer.valueOf(String.valueOf(c));
}
//把和转换成字符串,载转换成字符数组
char ch1[] = String.valueOf(sum).toCharArray();
//定义一节集合,对应和中每个数字以及要输出的字符串
Map<Character, String> m = new HashMap<>();
m.put('0', "ling");
m.put('1', "yi");
m.put('2', "er");
m.put('3', "san");
m.put('4', "si");
m.put('5', "wu");
m.put('6', "liu");
m.put('7', "qi");
m.put('8', "ba");
m.put('9', "jiu");
//定义一个字符串,方便组拼输出结果(字符串)
String sums=" ";
//遍历由和转换的字符串数组
for (char c : ch1) {
//组拼字符串
sums = sums+m.get(c)+" ";
}
//输出结果,去掉头和尾的空格
System.out.print(sums.trim());
}
}
python2参考答案
#!/usr/bin/python
n = input()
l = ['ling', 'yi', 'er', 'san', 'si', 'wu', 'liu', 'qi', 'ba', 'jiu', 'shi']
s = str(n)
sum = 0
for i in s:
sum += int(i)
sum_str = str(sum)
sum_sum = ''
for index, sum_i in enumerate(sum_str):
sum_sum = sum_sum+l[int(sum_i)] if index == 0 else sum_sum+' '+l[int(sum_i)]
print sum_sum