思路:用字符串存储,累加之后,辗转相除法,得到每一位。注意这时得到的是逆序,所以要倒着存储,再输出。注意特判,输入为0的时候,输出应该是"ling",牛客网有这个测试点。

代码:

#include<cstdio>
#include<stdlib.h>
#include<cstring>
int main(){
    char str[100];
    int count,sum = 0;
    char b[10][5]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
    if(scanf("%s",str)!=EOF){  //如果用while的话,执行时输入完ctrl+z。然后送掉再按回车就行。
        count = strlen(str);
        for(int i = count-1;i >= 0;i --){
            sum += str[i]-'0';  //累加数字
        }
    }
    if(sum == 0){  //特判
        printf("ling\n");
    }
    char result[100][5];
    int j = 0;
    for(int i = 0;sum != 0;i ++){
        strcpy(result[j++],b[sum%10]);  //倒着存储
        sum /= 10;
    }
    j --;
    for(int i = j;i >= 0;i --){
        if(i != j){
            printf(" ");
        }
        printf("%s",result[i]);
    }
    return 0;
}

 版权声明:本文为博主原创文章,如有错误,恳请大家在评论区指出,在下不胜感激~如要转载注明出处即可~