此程序是把数字转换为大写汉字!!请教了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
请教如何解决!!!!谢谢!
#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
请教如何解决!!!!谢谢!
解决方案 »
- windows下 可以指定文件向指定的打印机提交打印任务吗?主要是想知道有简单的API没?
- CoCreateInstance()是否只能用户获得COM组件的第一个接口,其他的接口都必须QueryInterface得到?
- 小波变换 图像出现有规律的白点或黑点 求高手指教?
- mfc 调用flash怎么才能让他透明
- 在一个窗口类中是如何获得中文输入的信息的
- 关于ondraw()
- 在线等:如何修改网卡工作模式/速度(up者有分)
- 急!如何在datetime picker上显示时间!求解答
- 已得到hbitmap句柄,然后怎么通过该句柄从内存中读取图像并显示出来
- mfc将控件处理结合操作到main函数中,程序会出现崩溃
- 二维动态数组内存分配及释放的问题。
- 浮点数的阶码是怎么运算的啊?????
#pragma comment (linker, "/MTd")
#else
#pragma comment (linker, "/MT")
#endif
void main()
{
double n;
char str[100];
memset(str,0,100);
cout<<"请输入要转换的数字";
cin>>n;
TOCUPER(n,str);
cout<<str<<endl;
}
1 2 3 4 5 6 7 8 9 0
壹.................一个结构
struct SAMPLE
{
byte nuber;
char hz[2];
}
做一个大数组
SAMPLE[10]并始化。用起来还简单。