C语言编程:数字金额转换为中文大写金额

先生,这个代码在Linux下用gcc编译通过了。
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <locale.h>

wchar_t cstrs[10];
wchar_t bit[10];

int main()
{
    cstrs[0]=0x96F6;cstrs[1]=0x58F9;cstrs[2]=0x8D30;
    cstrs[3]=0x53C4;cstrs[4]=0x8086;cstrs[5]=0x4F0D;
    cstrs[6]=0x9678;cstrs[7]=0x67D2;cstrs[8]=0x634C;
    cstrs[9]=0x7396;
    bit[0]=0x5706;bit[1]=0x62FE;bit[2]=0x4F70;
    bit[3]=0x4EDF;bit[4]=0x842C;bit[5]=0x62FE;
    bit[6]=0x4F70;bit[7]=0x4EDF;bit[8]=0x5104;
    bit[9]=0x62FE;bit[10]=0x4F70;bit[11]=0x4EDF;
    bit[12]=0x842C;

    setlocale(LC_ALL, "");
    double innum;
    int k=0; int tmp=1;

    scanf("%lf", &innum);
    while(tmp<innum){
	k+=1; tmp*=10;
    }
    if(tmp>innum){k--; tmp=tmp/10;}
    if(k<0){k=0, tmp=1;}

    int e, ee, t=0;
    e=(int)innum;
    while(e>=1){
	ee = (int)e/tmp;
        if(ee!=0){
	    if(t){
		printf("%lc",cstrs[0]);
		t=0;
	    }
	    printf("%lc", cstrs[ee]);
	    printf("%lc", bit[k]);
	} else {
	    t=1;
	    if(k==8 || k==4)printf("%lc",bit[k]);
	}
	k--; e=e%tmp; tmp=tmp/10;
    }
    long et;
    et=(long)(innum*10); printf("%lc%lc",cstrs[et%10], 0x89D2);
    et=(long)(innum*100); printf("%lc%lc",cstrs[et%10], 0x5206);

    puts("");
    return 0;
}
例如:
输入:
256000023.22
输出:
贰亿伍仟陆佰万零贰拾叄圆贰角贰分


  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值