#8152: C語言遞迴解法


silithus (希利蘇斯)


先找出數值的數量級,再依次印出數量級以上的數字、數量級名字、以及數量級以下的數字。

例:264531

(264531)

(26)萬4531

(2)拾(6)萬4531

貳拾陸萬(4531)

貳拾陸萬(4)仟531

貳拾陸萬肆仟(531)

貳拾陸萬肆仟(5)佰31

貳拾陸萬肆仟伍佰(31)

貳拾陸萬肆仟伍佰(3)拾(1)

貳拾陸萬肆仟伍佰參拾壹

#include <stdio.h>

#define MaxS 5

struct {

    char name[4]; int n;

} suffix[MaxS] = {{"拾",10},{"佰",100},{"仟",1000},{"萬",10000},{"億",100000000}};

char chi_num[10][4] = {"零","壹","貳","參","肆","伍","陸","柒","捌","玖"};

 

void chinese_num(int num)

{

    int i;

    if( num < suffix[0].n ) {

        printf("%s", chi_num[num]);

        return;

    }

    for(i=0; i<MaxS-1; i++)

        if(!(num/suffix[i+1].n))

            break;

    chinese_num(num/suffix[i].n);

    printf("%s", suffix[i].name);

    if(num %= suffix[i].n) {

        if(num < (suffix[i].n/10)) printf("%s", chi_num[0]);

        chinese_num(num);

    }

}

 

int main(void)

{

    int n;

    while(scanf("%d\n", &n) != EOF) {

        chinese_num(n);

        printf("\n");

    }

    return 0;

}

#8320: Re:C語言遞迴解法


sbc8112 (Mrfan)


先找出數值的數量級,再依次印出數量級以上的數字、數量級名字、以及數量級以下的數字。

例:264531

(264531)

(26)萬4531

(2)拾(6)萬4531

貳拾陸萬(4531)

貳拾陸萬(4)仟531

貳拾陸萬肆仟(531)

貳拾陸萬肆仟(5)佰31

貳拾陸萬肆仟伍佰(31)

貳拾陸萬肆仟伍佰(3)拾(1)

貳拾陸萬肆仟伍佰參拾壹

#include

#define MaxS 5

struct {

    char name[4]; int n;

} suffix[MaxS] = {{"拾",10},{"佰",100},{"仟",1000},{"萬",10000},{"億",100000000}};

char chi_num[10][4] = {"零","壹","貳","參","肆","伍","陸","柒","捌","玖"};

 

void chinese_num(int num)

{

    int i;

    if( num < suffix[0].n ) {

        printf("%s", chi_num[num]);

        return;

    }

    for(i=0; i

        if(!(num/suffix[i+1].n))

            break;

    chinese_num(num/suffix[i].n);

    printf("%s", suffix[i].name);

    if(num %= suffix[i].n) {

        if(num < (suffix[i].n/10)) printf("%s", chi_num[0]);

        chinese_num(num);

    }

}

 

int main(void)

{

    int n;

    while(scanf("%d\n", &n) != EOF) {

        chinese_num(n);

        printf("\n");

    }

    return 0;

}

我是一個新手 可以問一下大大 suffix 是什麼東西嗎 -口-

 

#8325: Re:C語言遞迴解法


sbc8112 (Mrfan)


先找出數值的數量級,再依次印出數量級以上的數字、數量級名字、以及數量級以下的數字。

例:264531

(264531)

(26)萬4531

(2)拾(6)萬4531

貳拾陸萬(4531)

貳拾陸萬(4)仟531

貳拾陸萬肆仟(531)

貳拾陸萬肆仟(5)佰31

貳拾陸萬肆仟伍佰(31)

貳拾陸萬肆仟伍佰(3)拾(1)

貳拾陸萬肆仟伍佰參拾壹

#include

#define MaxS 5

struct {

    char name[4]; int n;

} suffix[MaxS] = {{"拾",10},{"佰",100},{"仟",1000},{"萬",10000},{"億",100000000}};

char chi_num[10][4] = {"零","壹","貳","參","肆","伍","陸","柒","捌","玖"};

 

void chinese_num(int num)

{

    int i;

    if( num < suffix[0].n ) {

        printf("%s", chi_num[num]);

        return;

    }

    for(i=0; i

        if(!(num/suffix[i+1].n))

            break;

    chinese_num(num/suffix[i].n);

    printf("%s", suffix[i].name);

    if(num %= suffix[i].n) {

        if(num < (suffix[i].n/10)) printf("%s", chi_num[0]);

        chinese_num(num);

    }

}

 

int main(void)

{

    int n;

    while(scanf("%d\n", &n) != EOF) {

        chinese_num(n);

        printf("\n");

    }

    return 0;

}

我是一個新手 可以問一下大大 suffix 是什麼東西嗎 -口-

 


對不起 我看懂了 謝謝 問了蠢問題