请教大家一个例子,输入一个数字转换成带单位的钱数。比如输入12345输出的结果是1万2千3百4十5.希望大家能告诉我这个例子的编程思想。具体程序可不用写出来(当然写下来最好)。谢谢大家了。

解决方案 »

  1.   

    http://www.codesky.net/article/doc/200609/200609081973272.htm
    按照数字位数来转换字符
      

  2.   

    Function NtoC(n0 :real) :String; 
    Function IIF(b :boolean; s1,s2:string):string; 
    begin //本函数在VFP和VB中均为系统内部函数 
    if b then IIF:=s1 else IIF:=s2; 
    end; 
    Const c = '零壹贰叁肆伍陆柒捌玖◇分角圆拾佰仟万拾佰仟亿拾佰仟万'; 
    var L,i,n, code :integer; 
    Z :boolean; 
    s, st,st1 :string; 
    begin 
    s :=FormatFloat( '0.00', n0); 
    L :=Length(s); 
    Z :=n0<1; 
    For i:= 1 To L-3 do 
    begin 
    Val(Copy(s, L-i-2, 1), n, code); 
    st:=IIf((n=0)And(Z Or (i=9)Or(i=5)Or(i=1)), '', Copy(c, n*2+1, 2)) 
    + IIf((n=0)And((i<>9)And(i<>5)And(i<>1)Or Z And(i=1)),'',Copy(c,(i+13)*2-1,2)) 
    + st; 
    Z := (n=0); 
    end; 
    Z := False; 
    For i:= 1 To 2 do 
    begin 
    Val(Copy(s, L-i+1, 1), n, code); 
    st1:= IIf((n=0)And((i=1)Or(i=2)And(Z Or (n0<1))), '', Copy(c, n*2+1, 2)) 
    + IIf((n>0), Copy(c,(i+11)*2-1, 2), IIf((i=2) Or Z, '', '整')) 
    + st1; 
    Z := (n=0); 
    end; 
    For i := 1 To Length(st) do If Copy(st, i, 4) = '亿万' Then Delete(st,i+2,2); 
    NtoC := IIf( n0=0, '零圆整', st + st1); 
    End; 
      

  3.   

    先建立一个表,表里放着对应的位数值
    比如1 对应的就是个位
        2 对应的是十位
        3 对应的是百位
        ......
    1 对应的字符长度为一
    2 对应的字符长度为
    ....
    再用Pos语句对字符串进行操作
    这样说不知道你理解了没?
      

  4.   

    Function NtoC(n0 :real) :String; 
    Function IIF(b :boolean; s1,s2:string):string; 
    begin //本函数在VFP和VB中均为系统内部函数 
    if b then IIF:=s1 else IIF:=s2; 
    end; 
    Const c = '零壹贰叁肆伍陆柒捌玖◇分角圆拾佰仟万拾佰仟亿拾佰仟万'; 
    var L,i,n, code :integer; 
    Z :boolean; 
    s, st,st1 :string; 
    begin 
    s :=FormatFloat( '0.00', n0); 
    L :=Length(s); 
    Z :=n0<1; 
    For i:= 1 To L-3 do 
    begin 
    Val(Copy(s, L-i-2, 1), n, code); 
    st:=IIf((n=0)And(Z Or (i=9)Or(i=5)Or(i=1)), '', Copy(c, n*2+1, 2)) 
    + IIf((n=0)And((i<>9)And(i<>5)And(i<>1)Or Z And(i=1)),'',Copy(c,(i+13)*2-1,2)) 
    + st; 
    Z := (n=0); 
    end; 
    Z := False; 
    For i:= 1 To 2 do 
    begin 
    Val(Copy(s, L-i+1, 1), n, code); 
    st1:= IIf((n=0)And((i=1)Or(i=2)And(Z Or (n0<1))), '', Copy(c, n*2+1, 2)) 
    + IIf((n>0), Copy(c,(i+11)*2-1, 2), IIf((i=2) Or Z, '', '整')) 
    + st1; 
    Z := (n=0); 
    end; 
    For i := 1 To Length(st) do If Copy(st, i, 4) = '亿万' Then Delete(st,i+2,2); 
    NtoC := IIf( n0=0, '零圆整', st + st1); 
    End;