思路: 1.数太大以 字符数组 的形式读入,用strlen读取长度 10的100次幂,字符数组需要大于100,然后枚举转换为整形然后 加和。
2.因为要从高位到低位输出拼音,把sum的每一位存于ans数组中、
3.将每个数字对应的汉语拼音写一个char型 二维 数组
#include <cstdio>
#include <cstring>
int main(){
int sum=0;
char str[110];
gets(str);
int length = strlen(str);
for(int i=0;i<length;i++){
sum=sum+(str[i]-'0');
}
int num=0,ans[10]={0};
while(sum!=0){
ans[num]=sum%10;//注意这种写法
num++;
sum/=10;
}
char change[10][5]={
"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};//ling五位 没有shi
//高位输出拼音
for(int i=num-1;i>=0;i--){
printf("%s",change[ans[i]]);
//格式控制
if(i!=0) printf(" ");
else printf("\n");//不加这个换行 拼音会多输出一个空格
}
return 0;
}