人民币转换:数字转中文大写

考试题目和要点:

  1. 中文大写金额数字前应标明“人民币”字样。中文大写金额数字应用壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、零、整等字样填写。(30分)
  2. 中文大写金额数字到“元”为止的,在“元”之后,应写“整字,如¥ 532.00应写成“人民币伍佰叁拾贰元整”。在”角“和”分“后面不写”整字。(30分)
  3. 阿拉伯数字中间有“0”时,中文大写要写“零”字,阿拉伯数字中间连续有几个“0”时,中文大写金额中间只写一个“零”字,如¥6007.14,应写成“人民币陆仟零柒元壹角肆分“。(40分)

输入描述:

输入一个double数

输出描述:

输出人民币格式

示例1

输入

151121.15

输出

人民币壹拾伍万壹仟壹佰贰拾壹元壹角伍分
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    char number[]="零壹贰叁肆伍陆柒捌玖拾佰仟万亿整分角元";
    int seq[200];
    char str[200];
    char spp[200];
    double num;
    int intNum;
    int dbNum;
    while(scanf("%lf",&num)!=EOF)
    {
        intNum=(int)num;
        num-=intNum;
        num*=100;
        dbNum=(int)(num+0.5);
        int len=0;
        while(intNum>0)
        {
            str[len++]=intNum%10+'0';
            intNum/=10;
        }
        str[len]='\0';
        int p=0;
        int flag=1;
        for(int i=len-1; i>=0; i--)
        {
            if(i%4==3)flag=1;
            if(str[i]=='0')
            {
                flag=0;
                if(i==8)seq[p++]=14;
                if(i==4)seq[p++]=13;
                if(i==0)seq[p++]=18;
                continue;
            }
            if(str[i]!='0'&&flag==0)
            {
                seq[p++]=0;
                flag=1;
            }
            seq[p++]=str[i]-'0';
            if(i%4>0)seq[p++]=i%4+9;
            if(i==8)seq[p++]=14;
            if(i==4)seq[p++]=13;
            if(i==0)seq[p++]=18;
        }
        if(dbNum==0)
            seq[p++]=15;
        else if(dbNum<10)
        {
            seq[p++]=dbNum;
            seq[p++]=16;
        }
        else if(dbNum==10)
        {
            seq[p++]=dbNum/10;
            seq[p++]=17;
        }
        else
        {
            seq[p++]=dbNum/10;
            seq[p++]=17;
            seq[p++]=dbNum%10;
            seq[p++]=16;
        }
        int l=0;
        for(int i=0; i<p; i++)
        {
            spp[l++]=number[seq[i]*2];
            spp[l++]=number[seq[i]*2+1];
        }
        spp[l]='\0';
        printf("人民币%s\n",spp);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43307431/article/details/107483127