Spell It Right
本题即要求将数字逐位相加并逐位输出数字英文
1.用to_string的解答:
直接用to_string将一串数字直接转化成字符串
#include <iostream>
using namespace std;
int main() {
string a;
int sum=0;//sum必须要初始化!!!
cin >> a;
for(int i=0;i<a.length();i++)
sum+=(a[i]-'0');
string str=to_string(sum);
string book[10]={"zero","one","two","three","four","five","six","seven","eight","nine",};
cout<<book[str[0]-'0'];
for(int i=1;i<str.length();i++)//这里不需要<=(结尾字符不需要输出)
cout<<" "<<book[str[i]-'0'];
return 0;
}
2.不用to_string的解答:(实现to_string)
#include <iostream>
#include<cmath>
using namespace std;
string my_to_string(int num) {
int len = log10(num) + 1;
string str(len, ' ');
for (int i = 0; i < len; i++) {
int t = num % 10;
str[len - 1 - i] = t+'0';
num /= 10;
}
return str;
}
int main() {
string a;
int sum=0;//sum必须要初始化!!!
cin >> a;
for(int i=0;i<a.length();i++)
sum+=(a[i]-'0');
string str=my_to_string(sum);
string book[10]={"zero","one","two","three","four","five","six","seven","eight","nine",};
cout<<book[str[0]-'0'];
for(int i=1;i<str.length();i++)//这里不需要<=(结尾字符不需要输出)
cout<<" "<<book[str[i]-'0'];
return 0;
}
3.to_string的实现:
数字(int)+'0’变为字符型数字
string my_to_string(int num) {
int len = log10(num) + 1;
string str(len, ' ');
for (int i = 0; i < len; i++) {
int t = num % 10;
str[len - 1 - i] = t+'0';
num /= 10;
}
return str;
}
PS:
①定义sum的时候一定要初始化为0!!!
②字符类型的数字,减去’0’恢复int类型数字
③int len = log10(a) + 1;计算数字的1位数(要引入头文件)