![](https://i-blog.csdnimg.cn/blog_migrate/5a0bb7ce0a72da6080a4e791f6ea995e.png)
题目
解决代码及点评
/*
大整数数相乘的问题
两个超过范围的大数进行相乘,需要用字符串来表示数组
进行相乘
*/
#include <iostream>
using namespace std;
void Multiple(char *pszBuf1, char *pszBuf2, char *pszBuf3)
{
int nLen1 = strlen(pszBuf1);
int nLen2 = strlen(pszBuf2);
int i, j, In, nBegin = nLen1 + nLen2 - 1;
for (i = nLen1 - 1; i >= 0; i--)
{
In = 0;
int nIndex = nBegin--;
for (j = nLen2 - 1; j >= 0; j--)
{
int nTmp = (pszBuf3[nIndex] - '0') + (pszBuf1[i]-'0')*(pszBuf2[j]-'0') + In;
pszBuf3[nIndex--] = nTmp % 10 + '0';
In = nTmp / 10;
}
pszBuf3[nIndex] = In + '0';
}
}
int main()
{
char szBuf1[] = "12";
char szBuf2[] = "12";
int nLen3 = sizeof(szBuf1)+sizeof(szBuf2) - 1;
char *pszBuf3 = new char[nLen3];
int i;
for (i = 0; i < nLen3; i++)
{
pszBuf3[i] = '0';
}
pszBuf3[i - 1] = '\0';
Multiple(szBuf1, szBuf2, pszBuf3);
while (*pszBuf3 == '0')
{
pszBuf3++;
}
while (*pszBuf3 != '\0')
{
cout<<*pszBuf3++;
}
cout<<endl;
system("pause");
return 0;
}
代码下载及其运行
代码下载地址:http://download.csdn.net/detail/yincheng01/6704519
解压密码:c.itcast.cn
下载代码并解压后,用VC2013打开interview.sln,并设置对应的启动项目后,点击运行即可,具体步骤如下:
1)设置启动项目:右键点击解决方案,在弹出菜单中选择“设置启动项目”
2)在下拉框中选择相应项目,项目名和博客编号一致
3)点击“本地Windows调试器”运行
程序运行结果