PAT (Basic Level) Practice B1002 写出这个数 (20分)

读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。

输入格式:

每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 1。

输出格式:

在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。

输入样例:

1234567890987654321123456789

输出样例:

yi san wu

题型:字符串处理

思路:

建立一个字符串数组str[10]按照下标顺序保存0-9这10个数字的拼音。

用string接受输入,s[x]可以获得字符串指定位置的字符s[x]-'0'将char类型转为int,注意是减 '0' 不是 0 ,for循环将各位数字的和累加到sum中

然后将sum转为字符串类型,对各个位上的数字输出对应的拼音str[num[i]-'0']

代码实现:

 1 #include <iostream>
 2 #include<string>
 3 using namespace std;
 4 int main() {
 5     string s;
 6     cin >> s;
 7     int sum = 0;
 8     string str[10] = { "ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu" };
 9     for (int i = 0; i < s.length(); i++) {
10         sum += (s[i] - '0');
11     }
12     string n = to_string(sum);
13     for (int i = 0; i < n.length(); i++) {
14         if (i != 0) cout << " ";
15         cout << str[n[i] - '0'];
16     }
17     return 0;
18 }

 

 

 

 
posted @ 2020-09-16 16:04  SeverusLiving  阅读(166)  评论(0)    收藏  举报