#include<stdio.h>
int main(void)
{
char num[101];
int sum = 0;
int i = 0;
char c[10][10] = { "ling","yi","er","san","si","wu","liu","qi","ba","jiu" };
num[i] = getchar();
while (num[i] != '\n')
{
sum += num[i] - '0';
i++;
num[i] = getchar();
}
//printf("%d\n", sum);
int total = sum;
int j = 1;
while (total > 0)
{
total /= 10;
j *= 10;
}
j /= 10;
int y;
for (; j > 0; j /= 10)
{
y = sum;
y /= j;
sum %= j;
printf("%s", c[y]);
if (j > 1)
printf(" ");
}
return 0;
}
1.利用字符串储存测试的超大数字并且每得到一个数就添加到sum变量中
利用getchar()来每次获得一个字符
字符需转化为整数类型——则用‘0’在ASC码来做基准 从而把字符重新转化为整数类型
循环条件利用输入最后是回车来判断
2.正向分解所得和
经典操作——应该要能立刻写出来
法一:利用循环来将数字每次/10 从而最终得到位数——但这样其实会多一位10(0的数量不能和数字的位数一样 而应该整体和数字位数一样 )
法二:可以利用strlen函数直接得到字符串长度
然后即可循环得到每一位数字
3.利用字符串数组来代替switch-case
利用字符串数组可以巧妙代替switch-case从而节省空间