A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 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("圆整") ;
}

7 个回复

倒序浏览
回复 使用道具 举报
竟让还用了switch语句...  
回复 使用道具 举报
Dream丶boy 发表于 2016-5-12 21:04
竟让还用了switch语句...

哈哈,写这个恶心死我了。
一直报错警告,写完一闭眼就是红的黄的条条。
回复 使用道具 举报
大家都来写写笔试面试题吧,感觉自己写代码有很大提高,另外还帮助记忆细碎知识。
回复 使用道具 举报
看不懂的说{:2_31:}
回复 使用道具 举报
zxc54321 来自手机 中级黑马 2016-5-13 12:19:34
7#
表示就像天书
回复 使用道具 举报

写的太乱了,各位论坛的大神们帮帮忙发个改简便的方法。
或者直接上个新的好学习一下啊。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马