阿拉伯数字小写金额转换成中文大写金C额程序说明

阿拉伯数字小写金额转换成中文大写金额C程序说明

1、问题的提出

     寒假帮同学交缴话费时,不经意间看到收据上同时有小写金额和大写金额,想想各种各样的票据诸如缴费收据、银行业务回单、商场销售凭证、专用发票等都是如此。若是手写的就列出了中文大写金额的货币单位(一般最大就个佰万),只要填写大写数字和划差就行;若是机器打印的,则是一次性将大写数字和货币单位一起打印出来,一般还会打印当前日期。嗯,那时便有了个想法,能否用C编程来实现这一打印过程呢(票据应该是定位的打印,不过好像有专门的票据打印机其原理我不怎么清楚所以暂时没涉及,只做简单的金额大小写转换),当然是指本人能否做到。想了想,有点眉目、有点麻烦,遂上网搜搜,方知并不是什么新奇的想法,能搜到一些其他语言作成的,却没搜到C语言的,哈有点开心啊,雄心壮志顿上心头,我也懒得再搜了,就由我自己来编写吧,印象中本人自主提出的第一个编程题吧,虽然没什么新意。斗志激昂啊,行动!又搜索一些中文大写金额的写法规定什么的,搜到一个《正确填写票据和结算凭证的基本规定》,很是详细,OK!就你了,遂以之为蓝本,另外一个问题就是最大到多少,当时那个被斗志充满的头脑,想啥想呢,就最大的吧,寻思好像就万亿最大了吧,再大似乎也没了,再说万亿就应该够用了,基本敲定了。直到这个暑假的这些天我才来把它实现,总是这么没效率啊。

     上面废话一堆,已然历史。啊再罗嗦一下,之所以要写上中文大写金额,就是为了防止涂改,小写的话要是随意被人加几个0就不得了了(我也是看武林外传后才知道的,不过若是打印的好像在打印后也不会有此顾虑)。好,下面来看下我整理的中文大写金额写法的一些规范吧:

    ①、中文大写金额数字前应标明人民币字样(我先前标的人民币/RMB,大写金额数字应紧接人民币字样填写,不得留有空白。阿拉伯小写金额数字前面,均应填写人民币符号¥。中文大写金额数字应用正楷或行书填写,如壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、圆(元)、角、分、零、整()等字样。不得用一、二()、三、四、五、六、七、八、九、十、念、毛、另(0)填写,不得自造简化字。

②、中文大写金额数字到圆(元)为止的,在圆(元)之后,应写整()字,在角之后,可以不写整()(我没写)。大写金额数字有分的,分后面不写整()字。

③、阿拉伯数字小写金额数字中有0时,中文大写应按照汉语语言规律、金额数字构成和防止涂改的要求进行书写。阿拉伯数字中间有0时,中文大写要写零字(如¥1409.50,应写成人民币陆壹仟肆佰零玖元伍角);若阿拉伯数字中间连续有几个0时,中文大写金额中间可以只写一个零字(如¥6007.14,应写成人民币陆仟零柒元壹角肆分);但阿拉伯金额数字万位和元位是0,或者数字中间连续有几个0,万位、元位也是0但千位、角位不是0,中文大写金额中可以只写一个零字,也可以不写零字(我没写),(如¥107000.53,应写成人民币壹拾万柒仟元零伍角叁分,或者写成人民币壹拾万零柒仟元伍角叁分);阿拉伯金额数字角位是0,而分位不是0时,中文大写金额元后面应写零字(如¥16409.02,应写成人民币壹万陆仟肆佰零玖元零贰分)。

 

2、检验程序

关于程序检验也可看成对上述规则的举例说明,所以就列了出来。截图部分为在vc++6.0下运行的结果。程序思路可直接看提供的源程序to_rmb.c,对于程序并无什么新奇,就是根据问题的提出进行的。我是在Dev-C++ 4.9.9 .2下进行处理的,后来也在vc++6.0中运行了。我将输入作为字符串处理,然后分为整数和小数部分分别进行转换输出,由于输出中文的缘故,用数组、指针数组都没能成功输出显示(与字符编码相互的兼容有关),就用了switch语句模仿数组进行了对应的处理。对于各种不谨慎的输入,也做了些适当的处理,但有一定的局限性(对于小数部分只处理前两位,整数部分以0开头的直接做了0处理而忽略后面的整数部分,取小数点是从最大整数位开始搜索,不能用带分隔符的作为输入,如:123,456,789.00等等)。若您发现有错误和值得改进之处,恳请指正,有新的思路,希望分享交流。

 

            阿拉伯数字小写金额转换成中文大写金额程序检验
阿拉伯数字小写金额
 
部分输出(中文大写金额)
¥9870006504320.01
 
人民币/RMB玖万捌仟柒佰亿零陆佰伍拾万肆仟叁佰贰拾圆零壹分
¥11
 
人民币/RMB壹拾壹圆整
¥11.00
 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值