1082. Read Number in Chinese


题意:

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  八千万

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值