原题地址
https://www.patest.cn/contests/pat-a-practise/1005
以英文单词形式,输出长整数的各数位之和的每一位。
解题思路
对输入的每一位累加后,用常量字符串数组控制sum的每一位输出即可。
AC代码
#include <iostream>
#include <cstring>
using namespace std;
const int maxn = 105;
const string s[10] = {"zero", "one", "two", "three", "four",
"five","six", "seven", "eight", "nine"};
int main()
{
ios::sync_with_stdio(false);
char str[maxn], ans[5];
cin >> str;
int sum = 0, cnt = 0;
for (int i = 0; i < strlen(str); ++i)
sum += str[i]-'0'; //逐位累加
if (sum == 0)
{
cout << "zero" << endl;
return 0;
}
while(sum) //逐位拆分
{
ans[cnt++] = sum%10;
sum /= 10;
}
for (int i = cnt-1; i >= 0; --i)
{
cout << s[ans[i]]; //输出对应的字符串
if(i) cout << ' ';
}
return 0;
}