本道题主要注意不能用int型来输入,测试用例要用字符串然后转换为数字,最后要注意最后不能输出空格
代码用栈来完成输出,
#include<stdio.h>
#include<stack>
#include<string.h>
#include <iostream>
using namespace std;
int main()
{
char a[][5] = {"ling" ,"yi","er","san","si","wu","liu","qi","ba","jiu"};
stack<string>s;
char n[101];//int型的长度太小只能用char后面在转为int
int m;
string t;
int sum = 0;
cin >> n;
int len = strlen(n);
while (len > 0) {
m = n[len-1] -48;//将字符串数组转换为数字
sum += m;
len--;
}
do {
s.push(a[sum % 10 ]);//用栈来达到输出顺序
sum = sum / 10;
} while (sum > 0);
while (!s.empty())
{
cout << s.top();
s.pop();
if(!s.empty()) //消除最后一个空格
cout << " ";
}
}