どう書く?

1以上の整数(10桁くらい?)を与えたら その値を漢字で出力する

こういう プログラム 関数 を書く必要が出来た場合どう書くだろうか 言語は問わず
ちなみに自分はC言語で↓な感じ
興味あればトライしてみて下さい




#include
#include
#include

int get_one_digit( int n, int getFigure) {

int i;
for( i = 0; i < getFigure - 1; i++) {

n /= 10;

}
if(n == 0) {
return -1;
}
return n % 10;

}

void main( void) {

int n = 12345;
char * num[] = { "", "一", "二", "三", "四", "五", "六", "七", "八", "九",};
char * unit1[] = {
"",
"拾",
"百",
"千",
};
char * unit2[] = {
"",
"万",
"憶",
"兆",
};
int unit2_flag_array[] = {
0,
0,
0,
0,
};
int i;
int disp_n;
int old_i;
int old_disp_n;
char disp_str[256];
memset( disp_str, 0, sizeof( disp_str));

printf( "%d\n\n", n);

i = 1;
disp_n = get_one_digit( n, i);

while(disp_n >= 0) {

if(unit2_flag_array[(i - 1) / 4] == 0 && disp_n > 0) {
char temp[256];
strcpy( temp, disp_str);
sprintf( disp_str, "%s%s", unit2[(i - 1) / 4], temp);
unit2_flag_array[(i - 1) / 4] = 1;
}

if(disp_n == 0) {
}
else if(disp_n == 1 && (i - 1) % 4 != 0) {
char temp[256];
strcpy( temp, disp_str);
sprintf( disp_str, "%s%s", unit1[(i - 1) % 4], temp);
}
else {
char temp[256];
strcpy( temp, disp_str);
sprintf( disp_str, "%s%s%s", num[disp_n], unit1[(i - 1) % 4], temp);
}
old_i = i;
old_disp_n = disp_n;
i++;
disp_n = get_one_digit( n, i);

}

puts( disp_str);

}