PAT-2 读入一个正整数 n,如何计算其各位数字之和,用汉语拼音写出和的每一位数字?

读入一个正整数 \( n \),计算其各位数字之和,用汉语拼音写出和的每一位数字。

输入格式:

每个测试输入包含 1 个测试用例,即给出自然数 \( n \) 的值。这里保证 \( n \) 小于 \( 10^{100} \)。

输出格式:

在一行内输出 \( n \) 的各位数宇之和的每一位,拼音数宇间有 1 空格,但一行中最后一个拼音数字后没有空格。

输入样例:

1234567890987654321123456789

输出样例:

yi san wu
阅读 1.8k
1 个回答

实现供参考

#include <stdio.h>
#include <ctype.h>

const char* get_output_str(char ch) {
    switch (ch) {
    case '0': return "ling";
    case '1': return "yi";
    case '2': return "er";
    case '3': return "san";
    case '4': return "si";
    case '5': return "wu";
    case '6': return "liu";
    case '7': return "qi";
    case '8': return "ba";
    case '9': return "jiu";
    }
    return "";
}

int main() {
    int i;
    int sum = 0;

    for (;;) {
        int ch = getchar();
        if (!isdigit(ch)) {
            break;
        }
        sum += (ch - '0');
    }

    char buf[1024];
    snprintf(buf, sizeof(buf), "%d", sum);

    if (buf[0] != '\0') {
        fputs(get_output_str(buf[0]), stdout);

        for (i = 1; buf[i] != '\0'; ++i) {
            putchar(' ');
            fputs(get_output_str(buf[i]), stdout);
        }
    }
    return 0;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进