void CTestDlg::OnButton1()
{
// TODO: Add your control notification handler code here
char buf1[256] = {0};
char buf2[256] = {0};
GetDlgItemText(IDC_EDIT1, buf1, 256);
GetDlgItemText(IDC_EDIT2, buf2, 256);
if(strlen(buf2) > strlen(buf1))
{
GetDlgItemText(IDC_EDIT2, buf1, 256);
GetDlgItemText(IDC_EDIT1, buf2, 256);
}
int Len1 = 0;
int Len2 = 0;
Len1 = strlen(buf1);
Len2 = strlen(buf2);
CStringArray strRetArr;
strRetArr.SetSize(Len2);
int Time = 0;
//模拟单位乘
for(int i=Len2-1;i>=0;i--)
{
int Carry = 0;
CString strRet = "";
for(int j=Len1-1;j>=0;j--)
{
int TmpResult = (buf2[i] - '0') * (buf1[j] - '0');
CString str;
str.Format("%d", (TmpResult+Carry) % 10);
strRet = str + strRet;
Carry = (TmpResult+Carry) / 10;
}
if(Carry != 0)
{
CString str;
str.Format("%d", Carry);
strRet = str + strRet;
}
for(int k=0;k<Time;k++)
{
strRet = strRet + "0";
}
strRetArr.SetAt(i, strRet);
Time++;
}
//按照最大长度补0
int MaxLen = 0;
int ii;
int kk;
for(ii=0;ii<strRetArr.GetSize();ii++)
{
if(strlen(strRetArr.GetAt(ii)) > MaxLen)
{
MaxLen = strlen(strRetArr.GetAt(ii));
}
}
for(ii=0;ii<strRetArr.GetSize();ii++)
{
CString str;
str = strRetArr.GetAt(ii);
for(kk=strlen(str);kk<MaxLen;kk++)
{
str = "0" + str;
}
strRetArr.SetAt(ii, str);
}
//模拟最后求和
int Carry = 0;
CString strRet = "";
for(ii=MaxLen-1;ii>=0;ii--)
{
int TmpResult = 0;
for(kk=0;kk<strRetArr.GetSize();kk++)
{
CString tmp;
tmp = strRetArr.GetAt(kk);
TmpResult += (tmp[ii] - '0');
}
CString str;
str.Format("%d", (TmpResult+Carry) % 10);
strRet = str + strRet;
Carry = (TmpResult+Carry) / 10;
}
SetDlgItemText(IDC_EDIT3, strRet);
}