聪明文档网

聪明文档网

最新最全的文档下载
当前位置: 首页> 正在进行安全检测...

正在进行安全检测...

时间:2023-10-04 05:31:13    下载该word文档
前言银行、单位和个人填写的各种票据和结算凭证是办理支付结算和现金收付的重要依据,直接关系到支付结算的准确、及时和安全。票据和结算凭证是银行、单位和个人凭以记载帐务的会计凭证,是记载经济业务和明确经济责任的一种书面证明。因此,填写票据和结算凭证,必须做到标准化、规范化,要要素齐全、数字正确、字迹清晰、不错漏、不潦草,防止涂改。我的服务需要一个金额转换过程,本来想在网上找,但都是C++JavaScriptDelphiDemo,还没有C的。索性自己写一个。参考了其它的转换算法,对我有些启发。大多的算法都是直接分析字符串生成大写金额,即存在一个假设:源字符串的格式是正确的。在我的过程中,用状态机的方法分析源字符串,错误时,返回空指针(我可不敢保证传给我的过程的都是##.##)。分析出源字符串中整数部有多少个数字,是否有小数,统计结果放在一个结构体中,整数和小数部分的数字分别放在两个整形数组里。有了统计数据就可以生成大写金额了。转换过程有个难点:要区分万、亿等“段”,特别是个位这个“段”,这个概念是在《小写转大写金额在C++中的实现》文章中提到的。在下面的程序中用j=(size-i-1&0x3,实际上是j=(size-i-1%4取模,j==0时为段尾,需要特殊处理。所有的处理都是围绕0来进行的,也就是说,0才是难点。特殊位置的0,按段分,段中第一个非0数字前的0,可能有多个;段中两个非0数字间的0;段尾的0;个位的0;十分位,角位置的0另外,转换的一个重点是大写金额的写法,好像大多的算法都注重转换过程而对这个问题没有深究。我在文章后面附上转换规则。下面是代码1./**2.*@brief将源字符串中的小写金额转换为大写格式3.*4.*@paramdest目的字符串5.*@paramsrc小写金额字符串6.*@return7.*-NULL源字符串的格式错误,返回NULL8.*-NULL目的字符串的首位置9.*@note转换根据:中国人民银行会计司编写的最新《企业、银行正确办理支付结10.*指南》的第114-11511.*/12.char*chineseFee(char*dest,char*src13.{1/8
14.enum15.{16.START,//开始17.MINUS,//负号18.ZEROINT,//0整数19.INTEGER,//整数20.DECIMAL,//小数点21.DECIMALfRACTION,//小数位22.END,//结束23.ERROR//错误24.}status=START;25.struct26.{27.intminus;//0为正,1为负28.intsizeInt;29.intsizeDecimal;30.intinteger[10];31.intdecimal[10];32.}feeInfo;33.char*NumberChar[]=34.{"","","","","","","","","",""};35.char*UnitChar[]=36.{"","","","","","","","","","亿",37."","","","万亿","","","","亿亿",38."","","","人民币"};39.40.inti,j,size;//循环变量41.intzeroTag=0,//0标志42.decZeroTag=0;43.44.char*pDest=dest;45.char*pSrc=src;46.47.int*pInt=feeInfo.integer;2/8

免费下载 Word文档免费下载: 正在进行安全检测...

  • 29.8

    ¥45 每天只需1.0元
    1个月 推荐
  • 9.9

    ¥15
    1天
  • 59.8

    ¥90
    3个月

选择支付方式

  • 微信付款
郑重提醒:支付后,系统自动为您完成注册

请使用微信扫码支付(元)

订单号:
支付后,系统自动为您完成注册
遇到问题请联系 在线客服

常用手机号:
用于找回密码
图片验证码:
看不清?点击更换
短信验证码:
新密码:
 
绑定后可用手机号登录
请不要关闭本页面,支付完成后请点击【支付完成】按钮
遇到问题请联系 在线客服