#include<iostream>
#include<cstdio>
#include<stdio.h>
#include<string.h>
#include<string>
#include<map>
using namespace std;
map<char, string> alp;
void init()
{
alp['0'] = "zero",
alp['1'] = "one",
alp['2'] = "two",
alp['3'] = "three",
alp['4'] = "four",
alp['5'] = "five",
alp['6'] = "six",
alp['7'] = "seven",
alp['8'] = "eight",
alp['9'] = "nine";
}
int main(void)
{
init();
string s;
cin >> s;
int sum = 0;
for (int i = 0; i < s.length(); i++)
{
sum += (s[i] - '0');
}
//sprintf(ss, "%d", sum);
int n = 0;
string ss;
do{ //sum = 0 也要先存一下答案,这里先do一次
ss += char(sum%10 + '0');
n++;
sum /= 10;
} while (sum);
for (int i = n -1 ; ~i; i--)
{
cout << alp[ss[i]] << ( i? " " : "\n");
}
return 0;
}
用sprintf 转数字为字符串
#include<iostream>
#include<cstdio>
#include<stdio.h>
#include<string.h>
#include<string>
#include<map>
using namespace std;
map<char, string> alp;
void init()
{
alp['0'] = "zero",
alp['1'] = "one",
alp['2'] = "two",
alp['3'] = "three",
alp['4'] = "four",
alp['5'] = "five",
alp['6'] = "six",
alp['7'] = "seven",
alp['8'] = "eight",
alp['9'] = "nine";
}
int main(void)
{
init();
string s;
while (cin >> s)
{
int sum = 0;
for (int i = 0; i < (int)s.length(); i++)
{
sum += (s[i] - '0');
}
char ss[10];
sprintf(ss, "%d", sum);
for (int i = 0; i < (int)strlen(ss); i++)
{
cout << alp[ss[i]] << (i < (int)strlen(ss) - 1 ? " " : "\n");
}
}
return 0;
}