经验总结:
由于输入的数据可能是100位的数字,所以得用字符串来存储这个数字,然后字符串模拟相加。
可以使用一个字符串数组用于存放0~9的数字的英文,然后用栈存放这些英文,最后用栈输出。
记:一定要注意0的情况。
C++代码:
#include<bits/stdc++.h>
using namespace std;
string c[10] = {"zero","one","two","three","four","five","six","seven","eight","nine"};
int main() {
string s;
cin>>s;
stack<string> ss;
int num = 0;
for(int i=s.size()-1; i>=0; i--) {
num += s[i]-'0';
}
if(0 == num){ //一定要注意结果为0的情况
cout<<"zero";
}
while(num){
ss.push(c[num%10]);
num /= 10;
if(num>0){
ss.push(" "); //注意放入空格的情况
}
}
while(!ss.empty()){
cout<<ss.top();
ss.pop();
}
return 0;
}