精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>C/C++>>编码解码>>人民币小写换大写程序(解一)

主题:人民币小写换大写程序(解一)
发信人: tiger_x()
整理人: wenbobo(2002-12-27 15:50:04), 站内信件
人民币小写换大写程序的算法有很多在此给出一种,希望有更好的解法.
(此程序在borland c++ builder 4.0下通过)

//你必须保证参数是数字.

String __fastcall TForm1::UpperMoney(double jn)
{
    int L , ZL , Z , U , V;
    AnsiString F = "壹贰叁肆伍陆柒捌玖" ;
    AnsiString G = "元万亿万拾佰仟分角" ;
    AnsiString AA , B , JNS="                                         
      ";
    double je ;

    if(jn<=0)
return "零" ;

je=(jn<1?jn*100:jn) ;

sprintf(JNS.c_str(),"%26.2f",je) ;
JNS=TrimRight(TrimLeft(JNS)) ;

L = StrLen(JNS.c_str()) ;
L=(jn<1?(jn<0.1?1:2):L) ;

ZL = L+1 ;

AA =AnsiString("") ;
B = AnsiString("") ;

for( ;L>0; )
    {
        Z = StrToInt(JNS.SubString(ZL-L,1)) ;
        U = int(L/4) ;
        V = L%4 ;

        if( Z>0 )
        {
            U=(V==0?U+U-1:V+V+(U>0?7:13)) ;
            AA = AA+B+F.SubString(Z+Z-1,2)+G.SubString(U,2) ;
            B = "" ;
        }
        else
        {
            if(L==1)
                AA=AA+"整" ;
            else
            {
                if(V==0)
                    AA=AA+G.SubString(U*2-1,2);
                else
                    AA=AA+"" ;
            }

            B=(V>=0?"零":"") ;
        }
        L=(L==4?2:L-1) ;
    }
    return AA ;
}

--
     *********
     * Tiger *
     ********* 
http://jtiger.163.net

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.190.111]

[关闭][返回]