Given a non-negative integer N, your task is to compute the sum of all the digits of N, and output every digit of the sum in English.
Input Specification
Each input file contains one test case. Each case occupies one line which contains an N ( ≤ 1 0 100 \leq 10^{100} ≤10100)
Output Specification
For each test case, output in one line the digits of the sum in English words. There must be one space between two consecutive words, but no extra space at the end of a line.
Sample Input
12345
Sample Output
one five
思路1
- 读入字符串,逐位数字求和,将结果转化为字符串
- 输出对应结果字符串中字符对应的英文单词,输出时注意控制空格
代码1
#include <iostream>
using namespace std;
string words[10] = {"zero", "one", "two", "three", "four",
"five", "six", "seven", "eight", "nine"};
int main()
{
string s;
int sum = 0;
cin >> s;
for(int i=0; i<s.size(); i++)
sum += s[i]-'0';
s = to_string(sum);
for(int i=0; i<s.size(); i++)
{
if(!i)
cout << words[s[i]-'0'];
else
cout << " " << words[s[i]-'0'];
}
cout << endl;
return 0;
}
代码2
#include <iostream>
using namespace std;
string words[10] = {"zero", "one", "two", "three", "four",
"five", "six", "seven", "eight", "nine"};
int main()
{
string s;
int sum = 0;
cin >> s;
for(auto &c : s)
sum += c - '0';
s = to_string(sum);
cout << words[s[0]-'0'];
for(int i=1; i<s.size(); i++)
cout << " " << words[s[i]-'0'];
cout << endl;
return 0;
}