2011年10月30日 星期日

a008: 中文大寫數字

內容 :
    我們在金融機構填寫金額時使用的不是阿拉伯數字,而是中文的大寫數字。
    請寫一個程式將數字轉換為中文大寫數字
    標準大寫寫法如下:零、壹、貳、參、肆、伍、陸、柒、捌、玖、拾、佰、仟、萬、億

輸入說明 :
    整數數字 >=0 且 <=2147483647

輸出說明 :
    文字字串

範例輸入 :
12345
10200

範例輸出 :
壹萬貳仟參佰肆拾伍
壹萬零貳佰

提示 :
    * 遇到 10 時輸出 『拾』or『壹拾』均可

程式碼 :
#include<stdio.h>
#include<string.h>

void map(char num)
{
    switch(num)
    {
        case '1':
            printf("壹"); break;
        case '2':
            printf("貳"); break;
        case '3':
            printf("參"); break;
        case '4':
            printf("肆"); break;
        case '5':
            printf("伍"); break;
        case '6':
            printf("陸"); break;
        case '7':
            printf("柒"); break;
        case '8':
            printf("捌"); break;
        case '9':
            printf("玖"); break;
        case '0':
            printf("零"); break;
    }
}

int main()
{
    int i,len,zero,check;
    char num[20];
    
    while(scanf("%s",num)==1)
    {        
        for(; num[0] == 48; )
        {
            len = strlen(num);
            for(i=0; i<len; i++)
                num[i] = num[i+1];
        }
        
        len = strlen(num);        
        zero = 0;
                
        check = 0;
        for(i=9; i>-1; i--)
        {
            if(len > i)
            {
                if(num[len-i-1] == '0')
                    zero = 1;
                else
                {
                    if(zero)
                        map('0');
                    zero = 0;
                    map(num[len-i-1]);
                    
                    if(i == 7 || i == 3)
                        printf("仟");
                    if(i == 6 || i == 2)
                        printf("佰");
                    if(i == 9 || i == 5 || i == 1)
                        printf("拾");
                    check = 1;
                }
                if(i == 4 && check)
                {
                    check = 0;
                    printf("萬");
                }
                else if(i == 8 && check)
                {
                    check = 0;
                    printf("億");
                }
            }
        }
        printf("\n");
    }
    return 0;
}



http://zerojudge.tw/ShowProblem?problemid=a008

沒有留言:

張貼留言