大小金额转换,语法没错,但不出结果。我初学,帮我看看,高分相送。

xqw 2003-11-14 05:43:21
CString UpNum(char StrInput)
{
switch(StrInput)
{
case '0':
return("零"); //UpNum = '零';
break;
case '1':
return("壹"); //UpNum = '壹';
break;
case '2':
return("贰"); //UpNum = '贰';
break;
case '3':
return("叁"); //UpNum = '叁';
break;
case '4':
return("肆"); //UpNum = '肆';
break;
case '5':
return("伍"); //UpNum = '伍';
break;
case '6':
return("陆"); //UpNum = '陆';
break;
case '7':
return("柒"); //UpNum = '柒';
break;
case '8':
return("捌"); //UpNum = '捌';
break;
case '9':
return("玖"); //UpNum = '玖';
break;
//default:
}
}

CString UpUnit(int IntInput, int IntFlag = 0)
{
if (IntFlag = 0)
switch(IntInput)
{
case 1:
return("元"); //UpUnit = '元';
break;
case 2:
return("拾"); //UpUnit = '拾';
break;
case 3:
return("佰"); //UpUnit = '佰';
break;
case 4:
return("仟"); //UpUnit = '仟';
break;
case 5:
return("万"); //UpUnit = '万';
break;
case 6:
return("拾"); //UpUnit = '拾';
break;
case 7:
return("佰"); //UpUnit = '佰';
break;
case 8:
return("仟"); //UpUnit = '仟';
break;
case 9:
return("亿"); //UpUnit = '亿';
break;
case 10:
return("拾"); //UpUnit = '拾';
break;
case 11:
return("佰"); //UpUnit = '佰';
break;
case 12:
return("仟"); //UpUnit = '仟';
break;
// default:
}
else
switch(IntInput)
{
case 1:
return("角"); //UpUnit = '角';
break;
case 2:
return("分"); //UpUnit = '分';
break;
//default:
}
}

CString GetUpper(CString& StrInput , int IntFlag = 0)
{
CString StrResult;
char StrSwap;
int i =1;
bool BlnOFlag =0;
if (IntFlag == 0) { //整数部分的处理:处理到仟亿位
while (i <= StrInput.GetLength())
{
StrSwap =(char)StrInput.GetAt(StrInput.GetLength()-i); //(StrInput.Right(i)).Left(1); //left(right(StrInput, i), 1);
if ((StrSwap == '0' && i == 5) || (StrSwap == '0' && i == 9))
{
StrResult=UpUnit(i, 0)+UpNum(StrSwap)+StrResult; //StrResult= strcat(strcat(UpUnit(i, 0),UpNum(StrSwap)),StrResult);
BlnOFlag = 1;
}
if (StrSwap == '0' && BlnOFlag == 0)
{
StrResult=UpNum(StrSwap)+StrResult; //StrResult= strcat(UpNum(StrSwap) , StrResult);
BlnOFlag = 1;
}
if (StrSwap != '0')
{
StrResult=UpNum(StrSwap)+UpUnit(i, 0)+StrResult; //StrResult=strcat(strcat(UpNum(StrSwap) , UpUnit(i, 0)) , StrResult);
BlnOFlag = 0;
}
//ElseIf StrSwap = 0 And BlnOFlag = True Then
i++;
}
return StrResult; }
else
while (i <= StrInput.GetLength()) //小数部分的处理
{
StrSwap = StrInput.GetAt(i-1); //(StrInput.Left(i)).Right(1); //right(left(StrInput, i), 1);
StrResult=StrResult+UpNum(StrSwap)+ UpUnit(i, 1); //StrResult=strcat(strcat(StrResult , UpNum(StrSwap)) , UpUnit(i, 1));
i++;
}
return StrResult;
}

void DlgSwitch::OnOK()
{
// TODO: Add extra validation here
DlgSwitch thedlgswitch;
CString StrInt;
CString StrDim;
int i;
UpdateData(TRUE);
if (thedlgswitch.m_moneyold.Find('.') > 0 )
{
i=thedlgswitch.m_moneyold.Find('.');
StrInt = thedlgswitch.m_moneyold.Mid(0, i);
StrDim = thedlgswitch.m_moneyold.Mid(i,thedlgswitch.m_moneyold.GetLength()-i);
}
else
StrInt = thedlgswitch.m_moneyold;
if (StrDim.IsEmpty())
thedlgswitch.m_moneynew=GetUpper(StrInt, 0);
else
thedlgswitch.m_moneynew=GetUpper(StrInt, 0) + GetUpper(StrDim, 1);
//thedlgswitch.m_moneynew=strcat(GetUpper(StrInt, 0) , GetUpper(StrDim, 1));
UpdateData(FALSE);
CDialog::OnOK();
Invalidate();
}
...全文
29 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
JerryGR 2003-12-01
  • 打赏
  • 举报
回复
CDialog::OnOK是什么意思,你OnOK了,Invalidate还有用吗?
你把CDialog::OnOK那行注释掉怎么样
还有,不明白你的UpdateData(FALSE)是什么意思,你的StrDim是临时变量,它怎么才能够在对话框中显示阿?
魔芋 2003-12-01
  • 打赏
  • 举报
回复
CString turn(float fNum)
{
char szUpperNum[] = "零壹贰叁肆伍陆柒捌玖";
char szNum[100];
char szTemp[10];
char szTempNum[100];
CString CsReturn;

sprintf(szNum,"%f",fNum);
int nIndex = 0;

do while( szNum[nIndex] != '\0')
{
strcpy(szTemp,szNum[nIndex],1);
strcpy(szTempNum[nIndex*2],szUpperNum[atoi(szTemp)*2],2);
}
CsReturn = szTempNum;
}
xqw 2003-12-01
  • 打赏
  • 举报
回复
if (thedlgswitch.m_moneyold.Find('.') > 0 )难道find有错,返回值为-858993460。我输入的测试数据肯定没错的。
carbon107 2003-11-28
  • 打赏
  • 举报
回复
carbon107@hotmail.com
topwork 2003-11-28
  • 打赏
  • 举报
回复
结果出不来是什么意思?具体说说现象好么?
xqw 2003-11-28
  • 打赏
  • 举报
回复
感觉到高手都不上这个网站了,没谁给我满意答复。哪位愿意给我看看源代码的,留个email。或给我发信:xqw01@sohu.com ;交流于软件开发来说总是重要的。还有分呢?
LinLei 2003-11-24
  • 打赏
  • 举报
回复
gz
zhan_yonghua 2003-11-18
  • 打赏
  • 举报
回复
太长了.语法没错?这句不就错了if (IntFlag = 0)
3jaja 2003-11-16
  • 打赏
  • 举报
回复
太复杂了,没时间看,给个我编的。
void UpNum(char*strNew,char*strOld)
{
int i,t,index=0,len=strlen(strOld);

char *c1[]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
char *c2[]={"仟","佰","拾","亿","仟","佰","拾","万","仟","佰","拾","元"};
char *c3[]={"角","分"};

for(t=0;t<len;t++){
if(strOld[t]=='.'){
break;
}
}
index=12-t;
strNew[0]='\0';
for(i=0;i<t;i++,index++){
strcat(strNew,c1[strOld[i]-0x30]);
strcat(strNew,c2[index]);
}
index=0;
for(i=t+1;i<len;i++,index++){
strcat(strNew,c1[strOld[i]-0x30]);
strcat(strNew,c3[index]);
}
}

调用strNew为大写金额
char strNew[100],strOld[100]="1234567890.24";
UPNum(strNew,strOld);

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧