大小写金额转换的算法(10分)

  • 主题发起人 flashCode
  • 开始时间
F

flashCode

Unregistered / Unconfirmed
GUEST, unregistred user!
有谁知道在C++Builder中计算大小写金额转换问题的算法,能给个源代码吗?谢谢!
 
这周电脑报中有一个delphi下的这个程序
你看看吧,相信在c++中也一定好用(思路一样吗)
我在delphi5/win98 与 delphi6/win2000 下都通过了!很好的
 
function Tform1.SmallTOBig(small:real):string;
var SmallMonth,BigMonth:string;
wei1,qianwei1:string[2];
qianwei,dianweizhi,qian:integer;
begin
{------- 修改参数令值更精确 -------}
{小数点后的位置,需要的话也可以改动-2值}
qianwei:=-2;
{转换成货币形式,需要的话小数点后加多几个零}
Smallmonth:=formatfloat('0.00',small);
{---------------------------------}
dianweizhi :=pos('.',Smallmonth);{小数点的位置}
{循环小写货币的每一位,从小写的右边位置到左边}
for qian:=length(Smallmonth)do
wnto 1do
begin
{如果读到的不是小数点就继续}
if qian<>dianweizhi then
begin
{位置上的数转换成大写}
case strtoint(copy(Smallmonth,qian,1)) of
1:wei1:='壹';
2:wei1:='贰';
3:wei1:='叁';
4:wei1:='肆';
5:wei1:='伍';
6:wei1:='陆';
7:wei1:='柒';
8:wei1:='捌';
9:wei1:='玖';
0:wei1:='零';
end;
{判断大写位置,可以继续增大到real类型的最大值}
case qianwei of
-3:qianwei1:='厘';
-2:qianwei1:='分';
-1:qianwei1:='角';
0 :qianwei1:='元';
1 :qianwei1:='拾';
2 :qianwei1:='佰';
3 :qianwei1:='千';
4 :qianwei1:='万';
5 :qianwei1:='拾';
6 :qianwei1:='佰';
7 :qianwei1:='千';
8 :qianwei1:='亿';
9 :qianwei1:='十';
10:qianwei1:='佰';
11:qianwei1:='千';
end;
inc(qianwei);
BigMonth :=wei1+qianwei1+BigMonth;{组合成大写金额}
end;
end;
SmallTOBig:=BigMonth;
end;
 
一般的大小写转换程序都很简单地把小写数字转换成大写数字而已,所以会出现"壹万零仟零佰零元"或者出现"壹万壹元"的结果,
我的主页上我自己做了一个(不过是Delphi的),不会出现这样的问题,请测试:
http://www.aidelphi.com
 
不好意思!
 
顶部