数字转换为中文大写

囧钻石

囧钻石

2016-02-19 14:25

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

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

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

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

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

数字转换为中文大写

编程语言 网络编程
数字转换为中文大写

Excel数字转换为中文大写

电脑入门
Excel数字转换为中文大写

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

用金山wps轻松将数字转换为中文大写格式

wps教程 wps office教程
用金山wps轻松将数字转换为中文大写格式

Excel中数字如何自动转换成中文大写数字

电脑入门
Excel中数字如何自动转换成中文大写数字

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

excel中将阿拉伯数字转换成中文大写数字的函数方式

excel
excel中将阿拉伯数字转换成中文大写数字的函数方式

金额阿拉伯数字转换为中文的存储过程

SQLServer
金额阿拉伯数字转换为中文的存储过程

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

不依赖于DLL就能工作的全局钩子

不依赖于DLL就能工作的全局钩子

如何打开主板"DMA"通道?

如何打开主板"DMA"通道?
下拉加载更多内容 ↓