题意:
1 按中文的发音规则 九位(个节,万节,亿节) 除个节外每节的末尾要视情况输出万或者亿。
2 如果在数字的某节中,某个非零位的高位是零,那么该非零位的发音前额外加一个零。
思路:
1.将数字按字符串方式处理, 声明一个char型数组 因为题目说不会超过九位,算上符号位 我们定义一个长度15的防止溢出
gets读入 别忘了获取长度
要先判断第一位 如果str[0]是负数 那么输出“-”,左边开始的索引往后移一位。所以得先设置下标left right处理数字的每一个节的输入输出。left指向当前输入的位数,right指向与left同节的个位。
怎么让left和right指向一个节呢?
首先 left初值赋0,若有负号,则往前加一位,让他永远指向每节的首位只需要不断加4就行
对于right 初值为len-1 即末尾处,让right不断减4,减到不超过left+4的时候就好
(我不是很明白 为啥不能直接等于left+4,然后不超过len就好,明天试试)
2.设置bool变量记录当前是否有零,输出left指向的位之前先判断该位是否为0,如果为0,则令flag为true,表示存在累积的0,如果非0,则根据flag的值判断是否需要输出额外的零。在这之后,就可以输出该位本身以及该位对应的位号(十、百、千)。当整个一小节处理完毕之后的话,再输出万或亿。
注意;
1. 如果万节所有位都为0,那么不应该输出多余的0。 800000008 读作八亿零八,不加万。
0 //ling
8 //ba
8 0808 0808 //ba yi ling ba bai ling ba wan ling ba bai ling ba 八亿零八百零八万零八百零八
-8 8080 8080 //fu ba yi ba qian ling ba shi wan ba qian ling ba shi 负八亿八千零捌拾万八千零八十
8 0000 0008 //ba yi ling ba
8 0000 0000 //ba yi
8000 0008 //ba qian wan ling ba 八千万零八
8000 8000 //ba qian wan ba qian 八千万八千
8000 0000 //ba qian wan 八千万