#includeint 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("%dn", 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从而节省空间



