
题目
解决代码及点评
/* 大整数数相乘的问题 两个超过范围的大数进行相乘,需要用字符串来表示数组 进行相乘 */ #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调试器”运行
程序运行结果