2011年11月22日 星期二

中文大寫數字

今天終於解決了三年以來的瓶頸= ="


#include <stdio.h>
#include <string.h>

int main(void)
{
    char s[11];
    char k[4][4] = {
        "仟", "佰", "拾", ""
    };
    char unit[3][4] = {
        "億", "萬", ""
    };
    char num[10][4] = {
        "零", "壹", "貳", "參", "肆", "伍", "陸", "柒", "捌", "玖"
    };
    int i, j, len, first, group, zero, empty;

    while (scanf("%s", s) == 1)
    {
        len = strlen(s);
        first = len % 4;
        group = len / 4;
        zero = 0;
        for (i = 0, j = 0; i <= group; i++)
        {
            for (empty = 1; j < first + 4*i; j++)
            {
                if (s[j] == '0')
                    zero = 1;
                else
                {
                    if (zero)
                    {
                        printf("零");
                        zero = 0;
                    }
                    printf("%s", num[s[j]-'0']);
                    printf("%s", k[j-first-4*(i-1)]);
                    empty = 0;
                }
            }
            if (!empty)
                printf("%s", unit[2-group+i]);
        }
        printf("\n");
    }

    return 0;
}

沒有留言:

張貼留言