写在最前面:
一道题写了快一天,真是服了我自己,我太垃圾了。
还是要多加练习。
C语言版本的答案:
#include<stdio.h>
#include<string.h>
int main()
{
char shuzu[100];
scanf("%s",shuzu);
int sum;
for(int i = 0;i<strlen(shuzu);i++)
{
sum+=shuzu[i]-'0';
}
int s[100],t=0;
while(sum!=0)
{
s[t]=sum%10;
sum/=10;
t++;
}
char pinyin[10][5]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
for(int j=t-1;j>=0;j--)
{
printf("%s",pinyin[s[j]]);
if(j!=0)
{
printf(" ");
}
}
return 0;
}
我觉得关键点在于,对/和%的理解,对C语言的字符串(也就是利用数组实现的字符串)的理解,对二维数组的理解,
100/10=10···0, 102/10=10···2
*100/100=1···0
/号得到的结果是商
%号得到的结果是余数
字符相减本质是ASCII码大小相减 ,得到的值应当赋给一个整数变量。
结尾无空行的要求如何实现:
那就只能单独输出空格,于是就有了最后面的这一句。
if(j!=0)
{
printf(" ");
}