黑马程序员技术交流社区

标题: 金额转换,阿拉伯数字转换成中国传统形式。(求改进) [打印本页]

作者: helloJohn    时间: 2016-5-12 18:29
标题: 金额转换,阿拉伯数字转换成中国传统形式。(求改进)
本帖最后由 helloJohn 于 2016-5-12 19:23 编辑

金额转换,阿拉伯数字转换成中国传统形式。例如:101000001010   转换为   壹仟零壹拾亿零壹仟零壹拾圆整

        char a[15]={0} ;
        printf("请您输入金额") ;
        fgets(a, 15, stdin) ;
        test21(a) ;
void test21(char *a){

    typedef struct{
        int _key ;
        char *_value[3] ;
    } ss ;

    unsigned long x=strlen(a)-1 ;
    ss qian[15] ={0,{"0","0"}};
   
    for (int n=0; n<x; n++) {
        qian[n]._key=a[n]-'0' ;
    }
    for (int n=0; n<x; n++) {
        switch (qian[n]._key) {
            case 0:
                if((x-n)%4!=1&&qian[n+1]._key!=0){qian[n]._value[0]="零" ;}
                else if ((x-n)%4==1&&qian[n+1]._key!=0){ qian[n]._value[2]="零" ;}
                break;
            case 1:qian[n]._value[0]="壹" ;break;
            case 2:qian[n]._value[0]="贰" ;break;
            case 3:qian[n]._value[0]="叁" ;break;
            case 4:qian[n]._value[0]="肆" ;break;
            case 5:qian[n]._value[0]="伍" ; break;
            case 6:qian[n]._value[0]="陆" ;break;
            case 7:qian[n]._value[0]="柒" ;break;
            case 8:qian[n]._value[0]="捌" ;break;
            case 9:qian[n]._value[0]="玖" ;break;
            default: break;
        }
        switch ((x-n)%4) {
            case 1:
                if((x-n)/4==1){
                    qian[n]._value[1]="万" ;
                }
                if((x-n)/4==2){
                    qian[n]._value[1]="亿" ;
                }
                break;
            case 2:if(qian[n]._key!=0)qian[n]._value[1]= "拾" ; break;
            case 3:if(qian[n]._key!=0)qian[n]._value[1]="佰" ; break;
            case 0:if(qian[n]._key!=0)qian[n]._value[1]= "仟" ; break;
            default:
                break;
        }
    }
    for (int n=0; n<x; n++) {
        if(qian[n]._value[0]==NULL){
        }else{printf("%s",qian[n]._value[0]) ;}
        if(qian[n]._value[1]==NULL){
        }else{printf("%s",qian[n]._value[1]) ;}
        if(qian[n]._value[2]==NULL){
        }else{printf("%s",qian[n]._value[2]) ;}
    }
    printf("圆整") ;
}
作者: helloJohn    时间: 2016-5-12 19:23

作者: Dream丶boy    时间: 2016-5-12 21:04
竟让还用了switch语句...  
作者: helloJohn    时间: 2016-5-13 09:48
Dream丶boy 发表于 2016-5-12 21:04
竟让还用了switch语句...

哈哈,写这个恶心死我了。
一直报错警告,写完一闭眼就是红的黄的条条。
作者: helloJohn    时间: 2016-5-13 09:51
大家都来写写笔试面试题吧,感觉自己写代码有很大提高,另外还帮助记忆细碎知识。
作者: SuperJJ    时间: 2016-5-13 12:16
看不懂的说{:2_31:}
作者: zxc54321    时间: 2016-5-13 12:19
表示就像天书
作者: helloJohn    时间: 2016-5-13 20:54

写的太乱了,各位论坛的大神们帮帮忙发个改简便的方法。
或者直接上个新的好学习一下啊。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2