数字转换为中文大写

//   模块:数字转换为中文大写

#include "stdafx.h"
static char   *unit1[] = { "拾","佰","仟" };
static char   *unit2[] = { "万","亿"  };
static char   *digital[] = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};

//   功能:将万以内的数据转换成字符,字符串与阅读方面相反
//   long level[in]:要转换的数据
//   char *buf[out]:字符输出
//   备注:内部函数
//******************************************************
static void GetLevelText(long level,char *buf)
{
   int digit;
   BOOL bPreZero=FALSE;
   BOOL bZeroValidate=FALSE;
   int i=0;
   int  unit=-1;
   while(level){
      digit=level%10;
      if(digit)
      {
         if(bPreZero&&bZeroValidate)
         {
            strcat(buf,digital[0]);
            i+=2;
         }
         if(unit!=-1)// buf[i++]=unit1[unit];//unit
         {
            strcat(buf,unit1[unit]);
            i+=2;
         }
         strcat(buf,digital[digit]);
         i+=2;
         bPreZero=FALSE;
         bZeroValidate=TRUE;
      }else
      {
         bPreZero=TRUE;
      }
      unit++;
      level/=10;
   }
   buf[i]=0;
}

//************************************************************
//   功能:数据转换成中文字符
//   long num[in]:要转换的数据
//   char *buf[out]:字符输出
//  返回值:TRUE-转换成功,FALSE-失败,数据超过处理范围
//************************************************************
BOOL Num2UpDigit(long num,char *buf)
{
   long level1,level2,level3;
   char level1buf[17]={0},level2buf[17]={0},level3buf[17]={0};
   int  p=0;
   level1=num%10000;
   num/=10000;
   level2=num%10000;
   num/=10000;
   level3=num;
   if(num/10000) return FALSE;//超过数据处理范围
   
   //将数据分成三级
   if(level1)   GetLevelText(level1,level1buf);
   if(level2)   GetLevelText(level2,level2buf);
   if(level3)   GetLevelText(level3,level3buf);
   
   if(level3){
      for(int i=strlen(level3buf)-2;i>=0;i-=2)
      {
         memcpy(buf+p,level3buf+i,2);
         p+=2;
      }
      memcpy(buf+p,unit2[1],2);//级别单位
      p+=2;
   }
   if(level2){
      if(level3&&level2/1000==0)//加零
      {
         memcpy(buf+p,digital[0],2);
         p+=2;
      }
      for(int i=strlen(level2buf)-2;i>=0;i-=2)
      {
         memcpy(buf+p,level2buf+i,2);
         p+=2;
      }
      memcpy(buf+p,unit2[0],2);//级别单位
      p+=2;
   }else if(level3&&level1)//加零
   {
      memcpy(buf+p,digital[0],2);
      p+=2;
   }
   if(level1){
      if((level2||level3)&&level1/1000==0&&!(level3&&!level2))//加零
      {
         memcpy(buf+p,digital[0],2);
         p+=2;
      }
      for(int i=strlen(level1buf)-2;i>=0;i-=2)
      {
         memcpy(buf+p,level1buf+i,2);
         p+=2;
      }
   }
   buf[p]=0;
   return TRUE;
}
Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值