PAT A1005 Spell It Right (20)
书中AC代码
#include <cstdio>
#include <cstring>
#include <iostream>
char num[10][10] = { //数字与单词的对应
"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"
};
char s[111]; //初始化字符串
int digit[10];
using namespace std;
int main() {
#ifdef ONLINE_JUDGE
#else
freopen("1.txt", "r", stdin);
#endif // ONLINE_JUDGE
cin.getline(s, 111);
int len = strlen(s);
int sum = 0, numLen = 0; //sum为s的数位之和,numLen计量sum的长度
for(int i = 0; i < len; i++) {
sum += (s[i] - '0'); //累加s的数位,得到sum
}
if(sum == 0) { //如果sum为0,特判输出num[0]
printf("%s", num[0]);
} else { // 如果sum不为零
while(sum != 0) { //将sum存到digit数组中
digit[numLen++] = sum % 10;
sum /= 10;
}
for(int i = numLen - 1; i >= 0; i--) { //从高位到低位输出digit数组
printf("%s", num[digit[i]]);
if(i != 0) printf(" "); //最后一个单词之后不输出空格
}
}
return 0;
}
吾生也有涯,而知也无涯。