输入样例:1234567890987654321123456789
输出样例:yi san wu
思路:
1.数值很大不能用常规int每位加和,然后switch。
2.所以采用数组将每一位以字符型读进数组。
3.将数组里每个数由字符型转化为整型并且加和。
4.想办法从高到低读出来。
上程序!#include#include int main(){ char a [1000]; int b [50]; int i,length, sum = 0,digits,t,orig,j; //digits位数、orig是sum的替代品 digits = 0; scanf("%[^n]%*c", a); char py[10][10] = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"}; //拼音数组 length = strlen(a); for(i = 0; i < length; i++){ //求出总和 sum += (a[i] - '0'); } orig = sum ; //弄个替代品,便利后续使用 while (orig > 0) { //弄清sum是几位数 orig /= 10; digits++; } for(t = 0; t < digits; t++){ //把和读进另外一个数组里面 b[t] = sum % 10; sum /= 10; } printf("%s",py[b[t-1]]); //为符合格式先倒序输出第一位再循环按格式打印其他位数 for(i = t-2; i >= 0; i--) printf(" %s",py[b[i]]); return 0; }
最初我的输入采用了gets,但是由于gets比较危险所以我就用了一个scanf的方法,
作为gets的替代方法大家可以自行百度一下,在这里就不详细讲解了。
(附上通过截图)
有问题可以评论区留言~



