还是有错误,真的快晕了!!!还得麻烦一下!!谢了!!!
此程序是把数字转换为大写汉字!!请教了ymbymb(毛病大哥)和szclm(IT的民工) 我加了一个主程序来运行,可是出现了一个错误,请高手们指点一二!谢了!
#include "iostream.h"
#include "afx.h"
void TOCUPER(double RMB,char *RMBHZ);
void main()
{
double n;
char str[];
memset(str,0,100);
cout<<"请输入要转换的数字";
cin>>n;
TOCUPER(n,str);
cout<<str<<endl;
}
void TOCUPER(double RMB,char *RMBHZ)
{
CString snum = "零壹贰叁肆伍陆柒捌玖 ";
CString stmp1 = "元拾佰仟万拾佰仟亿拾佰仟 ";
CString stmp2 = "角分 ";
CString sout;
char buf[20];
sprintf(buf, "%d", (int)RMB);
int nLen = strlen(buf);
BOOL isZero = FALSE;
for(int i = nLen - 1; i >= 0; i--)
{
CString tmp;
tmp = snum.Mid((buf[i] - '0') * 2, 2);
if(buf[i] != '0')
{
tmp += stmp1.Mid((nLen - 1 - i)*2, 2);
isZero = FALSE;
}
else if( (nLen - 1 - i)*2 == 8 || (nLen - 1 - i)*2 == 16 )
{
sout = stmp1.Mid((nLen - 1 - i)*2, 2) + sout;
}
if( !isZero )
sout = tmp + sout;
if( buf[i] == '0' )
isZero = TRUE;
}
if( sout.Find( "亿万" ) != -1 )
sout.Replace( "亿万", "亿" );
sprintf(buf, "%02d ", (int)((RMB - (int)RMB) * 100 + 0.5));
if(buf[1] == '0')
{
buf[1] = 0;
if(buf[0] == '0') buf[0] = 0;
}
nLen = strlen(buf);
for(i = 0; i < nLen; i++)
{
CString tmp;
tmp = snum.Mid((buf[i] - '0') * 2, 2);
if(buf[i] != '0') tmp += stmp2.Mid(i*2, 2);
sout += tmp;
}
if( nLen == 0 )
{
//加上一个整字
sout += "整 ";
}
memcpy(RMBHZ, sout, sout.GetLength());
RMBHZ[sout.GetLength()] = 0;
}
或者把主函数换成
void main()
{
double RMB = 3423434.45;
char RMBHZ[100];
TOCUPER(RMB, RMBHZ);
}
都会出现这样的问题:
Link......
nafxcwd.lib(thrdcore.obj) : error LNK2001:unresolved external symbol_endthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001:unresolved external
symbol_beginrhreadex
Debug/TOCUPER.exe:fatal error LNK1120:2 unresolved externals
Error executing link.exe
请教如何解决!!!!谢谢!