请看题目:
思路:
因为数据范围是10^100;所以数据类型不能设为int或者long long,所以设为string类型,再将输入的string类型的变量s一个个遍历出来,转化为int类型的整数,用一个int类型的变量sum将他们加起来,然后用一个数组将sum模10遍历出的每一个数装进去,同时sum要除以10,然后倒序输出数组中每一个数相对应的英文名。(提醒一下,0的英文名为zero)直接上代码一了明了!
代码:
#include<iostream>
using namespace std;
string s;
int a[105];
int sum,ans;
int main()
{
cin>>s;
for(int i=0;i<s.size();i++){
sum+=s[i]-'0';//将每一个字符转为整数并加起来
}
while(sum){
ans++;//记录从个位到首位对应数字的下标
a[ans]=sum%10;//将每一个取模得到的数装入数组
sum/=10;//向前进一位
}
for(int j=ans;j>0;j--){//因为前面是从各位到首位,所以这里就得从后往前(从首位到个位)
if(a[j]==0){ //输出数字对应的英文名。
cout<<"zero"<<' ';
}
if(a[j]==1){
cout<<"one"<<' ';
}
if(a[j]==2){
cout<<"two"<<' ';
}
if(a[j]==3){
cout<<"three"<<' ';
}
if(a[j]==4){
cout<<"four"<<' ';
}
if(a[j]==5){
cout<<"five"<<' ';
}
if(a[j]==6){
cout<<"six"<<' ';
}
if(a[j]==7){
cout<<"seven"<<' ';
}
if(a[j]==8){
cout<<"eight"<<' ';
}
if(a[j]==9){
cout<<"nine"<<' ';
}
}
return 0;
}