数字转换为中文大写

2016-02-19 14:25 8 1 收藏

每个人都希望每天都是开心的,不要因为一些琐事扰乱了心情还,闲暇的时间怎么打发,关注图老师可以让你学习更多的好东西,下面为大家推荐数字转换为中文大写,赶紧看过来吧!

【 tulaoshi.com - 编程语言 】

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

#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;
}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

//************************************************************
// 功能:数据转换成中文字符
// 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;
}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

来源:http://www.tulaoshi.com/n/20160219/1606947.html

延伸阅读
标签: Web开发
运用了正则表达式的功能,除了可以正确的转换成人民币的大写形式以外,还可以判断输入的形式是否正确有效。 将人民币数字转换成大写形式 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
标签: SQLServer
  CREATE FUNCTION ChangeBigSmall (@ChangeMoney money)   RETURNS VarChar(100) AS   BEGIN     Declare    @String1    char(20)     Declare    @String2    char(30)   ...
标签: PHP
  前几天我在oso论坛上问有没有这个源程序,没人回复。终于下定决心移植一个这样的函数,感谢网友Keyes提供移植用的Delphi源代码。其调用方式为$txt=big5togb($txt)。     (注:源代码中的include "data_big5.php";这个文件在就是一个数组,在http://caocao.oso.com.cn/data_big5.zip,请编辑下载到oso上...
标签: word
Word文档快速输入大写中文数字的教程   在Word文档中输入一大串大写中文数字(如壹拾贰万零捌佰伍拾)比较麻烦,实际上可以通过输入阿拉伯数字转化为大写中文数字的方法进行输入,方法如下: 第一步:编辑文档,需要输入大写数字时。 第二步:单击插入选项卡。 第三步:在插入选项卡中选择数字点击,弹出数字对...
因为找不到相关函数,便自己写了一个,是仿Excel 金额转换,不限金额长度。 const   NumberArray: array[0..9] of string =     ('零', '壹','貳','叁','肆','伍','陆','柒','捌','玖'); // 数字转与大写 fun...

经验教程

836

收藏

40
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部