题目来源html
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。java
每一个测试输入包含 1 个测试用例,即给出天然数 n 的值。这里保证 n 小于 $10^{100}$ios
在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。测试
1234567890987654321123456789
yi san wu
由于数字的范围是小于$10^{100}$,因此要用string接收输入,将string中的每一位数字累加到sum里,用 to_string(sum) 将sum转化成字符串nums,而后逐一输出nums对应的拼音spa
1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 int main() 6 { 7 string str; 8 string output[10] = { "ling","yi","er","san","si","wu","liu","qi","ba","jiu" }; 9 int sum = 0; 10 11 cin >> str; 12 int length = str.length(); 13 14 for (int i = 0; i < length; ++i) 15 { 16 sum = sum + str[i] - '0'; 17 } 18 19 string nums = to_string(sum); 20 21 for (int i = 0; i < nums.length(); ++i) 22 { 23 if (i != 0) 24 { 25 cout << " "; 26 } 27 cout << output[nums[i] - '0']; 28 } 29 30 return 0; 31 }
利用栈后进先出(FILO)的特色code
一样用string接收输入,将string中的每一位数字累加到sum里,接着将sum的每一位数字保存到栈中,而后进行出栈的操做,输出对应的拼音htm
假定sum = 135,那么入栈的顺序就是(栈底)5 3 1(栈顶),出栈的顺序就是1 3 5blog
1 #include <iostream> 2 #include <string> 3 #include <stack> 4 using namespace std; 5 6 int main() 7 { 8 string str; 9 string output[10] = { "ling","yi","er","san","si","wu","liu","qi","ba","jiu" }; 10 stack<int> v; 11 int sum = 0; 12 13 cin >> str; 14 int length = str.length(); 15 16 for (int i = 0; i < length; ++i) 17 { 18 sum = sum + str[i] - '0'; 19 } 20 //135 21 while (sum != 0) 22 { 23 v.push(sum % 10); 24 sum /= 10; 25 } 26 cout << output[v.top()]; 27 v.pop(); 28 while (!v.empty()) 29 { 30 cout << " " << output[v.top()]; 31 v.pop(); 32 } 33 return 0; 34 }
1 import java.util.Scanner; 2 3 public class Main { 4 public static void main(String[] args) { 5 Scanner input = new Scanner(System.in); 6 String str = input.nextLine(); 7 int num = 0; 8 for (int i = 0; i < str.length(); i++) { 9 num += str.charAt(i) - '0'; 10 } 11 String s = String.valueOf(num); 12 String[] output = {"ling","yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"}; 13 for (int i = 0; i < s.length(); i++) { 14 num = s.charAt(i) - '0'; 15 if (i != 0) 16 System.out.print(" "); 17 System.out.print(output[num]); 18 } 19 } 20 }