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;
}
原文地址:https://www.cnblogs.com/isChenJY/p/11370684.html