1002. 写出这个数 (20)

相关知识点:字符串处理

思路:
(1)用getchar()的形式每读入一个字符就将字符对应的数字进行累加。
(2)通过(1)将累加后的数sum,为了方便将sum从高位到低位输出,用sprinf转换成字符数组。
(3)从高位到低位枚举数组s[],输出每一位对应的字符串。

#include 
int main()
{
    int sum=0;
    char ch,s[4];                       //ch作为临时变量保存输入的每一个字符,s保存sum的每一个数字                        
    char b[10][5]={"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};
    while ((ch = getchar()) != '\n')    //如果一直输入字符,不按回车的话 
        sum += (ch - '0');
    sprintf(s, "%d", sum);              // sprintf(char *buffer, const char *format,[ argument])将任意类型数据按某种格式转换成字符串 
    for (int i = 0; s[i] != 0; i++){
        if (i > 0) 
            printf(" ");
        printf("%s", b[s[i]-'0']);
    }
    return 0;
}

你可能感兴趣的:(PAT乙级最终题解)