翻译:
1005.正确拼写它
给一个非负整数N,你的任务是计算N的所有位数的和,然后用英语输出和的每位。
输入说明:
每个输入文件包含一个测试实例。每个实例有一行,一行中含有一个数字N(<= 10100)。
输出说明:
对于每个测试用例,在一行内用英语单词输出和的每位。在两个连续的单词之间必须有一个空格,但是在一行的末尾不能有多余的空格。
样例输入:
12345
样例输出:
one five
需要注意的知识点:
(1)‘\0’是字符数组或者字符串结束标志
(2)s[0] - '0' // 表示将字符s[0]的ASCII码与字符0的ASCII码相减,如果s[0]是字符0~9,则表示将该字符变为对应的数字(int型)=>类型转换
(3)to_string() 将数值转化为字符串。返回对应的字符串。
(4)vector用法:
vector<int>test;//建立一个vector
test.push_back(1);
test.push_back(2);//把1和2压入vector,这样test[0]就是1,test[1]就是2
代码如下:
#include<iostream>
#include<stdio.h>
#include<vector>
#include<map>
#include<set>
#include<algorithm>
using namespace std;
int main(){
string a;
cin>>a;
int sum=0;
int i=0;
while(a[i]!='\0')
{
sum+=a[i]-'0';
i++;
//字符串类型转换
}
int temp;
vector <int> v;
do
{
temp = sum % 10;
sum = sum/10;
v.push_back(temp);
}
while (sum);//避免0的问题
for(int i=0;i<v.size();i++){
switch(v[v.size()-i-1]){
case 0:cout << "zero"; break;
case 1:cout << "one"; break;
case 2:cout << "two"; break;
case 3:cout << "three"; break;
case 4:cout << "four"; break;
case 5:cout << "five"; break;
case 6:cout << "six"; break;
case 7:cout << "seven"; break;
case 8:cout << "eight"; break;
case 9:cout << "nine"; break;
default:
break;
}
if(i!=v.size()-1){
cout<<" ";
//if i=v.size()-1 那么就说明所有数字已经录入完毕
}
}
}