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 }

浙公网安备 33010602011771号