给定一个非负整数N,您的任务是计算N的所有数字的和,并用英语输出和的每个数字。
输入规范
每个输入文件包含一个测试用例。每个案例占用一行,其中包含一个N(<=10100)。
输出规格
对于每个测试用例,在一行中以英语单词输出总和的数字。两个连续的单词之间必须有一个空格,但行尾不能有额外的空格。
样本输入
12345
样本输出
one five
思路分析
用字符串n来装载数字n,遍历字符串n 得到每一位字符数字,通过与‘0’的差值,得到整形数字,求和,再将其转化为字符串,遍历得到每一位字符数字,通过与‘0’的差值,转化为字符串数组array的下标,输出相应的字符;
代码
#include <iostream>
#include <string>
using namespace std;
int main(){
string n;
int sum=0;
cin >>n;
for(int i=0;i<n.length();i++){ //遍历得到每一位数字对应的字符,减去‘0’ 转化为相应的数字
sum+=(n[i]-'0'); // 求和
}
string s= to_string(sum); //将sum转化为字符串
string array[10]={"zero","one","two","three","four","five","six","seven","eight","nine"};
cout<< array[ s[0]-'0'];
for(int i =1;i<s.length();i++){ //遍历得到每一位数字对应的字符,减去‘0’ 转化为相应的数字,转化为数组array的下标
cout<<' '<< array[ s[i]-'0'];
}
return 0;
}