思路:用字符串存储,累加之后,辗转相除法,得到每一位。注意这时得到的是逆序,所以要倒着存储,再输出。注意特判,输入为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;
}
版权声明:本文为博主原创文章,如有错误,恳请大家在评论区指出,在下不胜感激~如要转载注明出处即可~