PAT B1002 写出这个数(C++)

PAT甲级目录 | PAT乙级目录

题目描述

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

输入格式:

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

输出格式:

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

输入样例:

1
1234567890987654321123456789

输出样例:

1
yi san wu

易错点:

  • 注意输出末尾没有空格
  • 倒序输出

也许陌生的知识点

1
2
#include <string> //C++的字符串头文件,和 C 中的 string.h 功能不一样
getline(cin, <val> ) // 字符串输入,能输入一整行包含空格的字符串

代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>
using namespace std;
int main(){
string str[] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};
int n = 0, num[101] = {0}, i = 0;
string s;
getline(cin, s); // 输入字符串类型变量
for(int i = 0; i < s.length(); i++){
n += (int)(s[i] - '0'); //字符转换为数字
}
while(n > 0){
num[i++] = n % 10;
n /= 10;
}
for(int j = i - 1; j >= 0; j--){ //倒序输出
cout << str[num[j]]; // 序号存放在num数组中
if(j != 0) printf(" "); // 注意末尾没有空格
}
return 0;
}