中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Visual C++ > 综合文章
数字转换为中文大写
作者:未知 时间:2005-06-07 12:12 出处:cdsn 责编:chinaitpower
              摘要:暂无
//********************************************************
// 模块:数字转换为中文大写


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



关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有