Chinaunix首页 | 论坛 | 博客
  • 博客访问: 104633625
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: C/C++

2008-04-16 17:21:25

作者:jobzhu   
 
/************************************/ 
/* 金额转换函数(pujezha.c) */ 
/* */ 
/* 功能: 将金额转换成大写. */ 
/************************************/ 

#include /*金额变换成大写*/ 
#include 

#include 
#include 
#include 

static char *lp( int j1, int count1 ) 

switch(count1-j1) 

case 1: 
return(""); 
case 2: 
return(""); 
case 3: 
return(""); 
case 4: 
return(""); 
case 5: 
return(""); 
case 6: 
return(""); 
case 7: 
return(""); 
case 8: 
return(""); 
case 9: 
return("亿"); 



char *strjea(char *d1,char *str) 

int count,i,j,k; 
char d[20]; 
str[0]=0; 
i=0; 
d[0]='\0'
while (d1!='.'&&d1!='\0'

d=d1
i++; 

d='\0'
if ( d[0] == '-'
strcat(str,""); 
if ( d[0] == '0'||(d[0] == '-' && d[1] == '0')) { 
strcat(str,"零元"); 
return(str); 

count=i; 
for (j=0;j{ 
if((j==0)&&(d[j]=='0')) break; 
if (d[j]=='.') break; 
switch(d[j]) 

case '0'
if (j==count-1) 

strcat(str,lp(j,count)); 
continue; 

else 

k=j; 
while(k!=count-1) 

if (d[k+1]!='0'

if((count-k)==5) 
strcat(str,""); 
else 
strcat(str,""); 
break; 

else 

if((count-k)==5 && (count<9 || (count==9&&(d[k-1]!='0'||d[k-2]!='0'||d[k-3]!='0')))) 
strcat(str,""); 
k++; 
if (k==count-1) goto lp1; 


j=k; 
continue; 
lp1: 
strcat(str,lp(k,count)); 
j=count; 
break; 

case '1'
strcat(str,""); 
strcat(str,lp(j,count)); 
break; 
case '2'
strcat(str,""); 
strcat(str,lp(j,count)); 
break; 
case '3'
strcat(str,""); 
strcat(str,lp(j,count)); 
break; 
case '4'
strcat(str,""); 
strcat(str,lp(j,count)); 
break; 
case '5'
strcat(str,""); 
strcat(str,lp(j,count)); 
break; 
case '6'
strcat(str,""); 
strcat(str,lp(j,count)); 
break; 
case '7'
strcat(str,""); 
strcat(str,lp(j,count)); 
break; 
case '8'
strcat(str,""); 
strcat(str,lp(j,count)); 
break; 
case '9'
strcat(str,""); 
strcat(str,lp(j,count)); 
break; 
default: 
break; 


return(str); 


static char *lpp(int j1,int count1) 

switch(count1-j1) 

case 1: 
return(""); 
case 2: 
return(""); 
default: 
return(""); 



char *strjeb(char d1[], char str[]) 

char a[3]; 
int j; 
int count; 

str[0]=0; 
strcpy(a,&d1[strlen(d1)-2]); 
if ( !strcmp(a,"00")) { 
strcat(str,""); 
return(str); 

count=2; 
for(j=0;jswitch(a[j]){ 
case '0'
if(j == 0 ) 
strcat(str,""); 
break; 
case '1'
strcat(str,""); 
strcat(str,lpp(j,count)); 
break; 
case '2'
strcat(str,""); 
strcat(str,lpp(j,count)); 
break; 
case '3'
strcat(str,""); 
strcat(str,lpp(j,count)); 
break; 
case '4'
strcat(str,""); 
strcat(str,lpp(j,count)); 
break; 
case '5'
strcat(str,""); 
strcat(str,lpp(j,count)); 
break; 
case '6'
strcat(str,""); 
strcat(str,lpp(j,count)); 
break; 
case '7'
strcat(str,""); 
strcat(str,lpp(j,count)); 
break; 
case '8'
strcat(str,""); 
strcat(str,lpp(j,count)); 
break; 
case '9'
strcat(str,""); 
strcat(str,lpp(j,count)); 
break; 
default: 
break; 

if ( a[1]=='0' && a[0] != '0' ) 
strcat(str,""); 
return(str); 



char *pujezh(char *je) 

static char str[80]; 
char tmp[80]; 

memset(str,0,80); 
sprintf(je,"%.2lf",atof(je)); 
memset(tmp,0,80); 
sprintf(str,"%s",strjea(je,tmp)); 
memset(tmp,0,80); 
sprintf(str,"%s%s",str,strjeb(je,tmp)); 
return(str); 


/* 金额加逗点 */ 
char *changje(char *je) 

int len,ds,ws,i,k,zfbz=0; 
double jinje; 
char tmp[5]; 
static char str[32]; 

jinje=atof(je); 
if(jinje<0.00) 
zfbz=1; 
sprintf(je,"%.2lf",jinje); 
memset(str,0,32); 
len=strlen( je ); 
ds=(len-4-zfbz)/3; // , 个数 
if( ds <= 0 ) 
return(je); 
ws=len-ds*3-3; //首个 , 前数字个数 
for(k=0;kstr[k]=*je++; 
str[k]=','
for(i=0;i<=ds;i++) 

for(k=0;k<3;k++) 
str[ws+k+i*3+i+1]=*je++; 
if( ds-i>1 ) 
str[ws+k+i*3+i+1]=','
else 
ws--; 

return(str); 


/* 汉字显示金额 */ 
char *chsje(double je, char *str) 

char buf[32]; 
char tmp[80]; 
sprintf(buf,"%.2lf",je); 
tmp[0]=0; 
strcpy(str,strjea(buf,tmp)); 
tmp[0]=0; 
sprintf(str,"%s%s",str,strjeb(buf,tmp)); 
return(str); 


char *fmtje(double je, char *str) 

char buf[32]; 
sprintf(buf,"%.2lf",je); 
strcpy(str,changje(buf)); 
return(str); 
}
阅读(419) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~