/******************************************************************************
*Author: steven
*Datatime: 2013-05-23
*此程序用来演示大数乘法的算法
*******************************************************************************/
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
#include <string>
using std::string;
void calculate(void);
int main()
{
?calculate();
?return 0;
}
void calculate(void)
{
?string str1,str2;
?cout<<"请输入两个大的正整数:n";
?cin>>str1>>str2;
?cout<<str1<<" * "<<str2<<" = ";
?int i,j,length,length1,length2;
?length1 = str1.size();
?length2 = str2.size();
?length = length1 + length2;
?int *pch = new int[length];
?for (i = 0; i < length; i++)
?{
??pch[i] = 0;
?}
?for (i = 0; i < length1; i++)
?{
??for (j = 0; j < length2; j++)
??{
???pch[i+j+1] += (str1[i] - '0') * (str2[j] - '0');
??}
?}
?//下面代码实现进位操作
?for (i = length; i > 0; i--)
?{
??if (pch[i] >= 10)
??{
???pch[i-1] += pch[i] / 10;
???pch[i] = pch[i] % 10;
??}
?}
?//跳过前导的零值
?while(pch[++i] == 0);
?for (; i < length; i++) ?{ ??cout<<pch[i]; ?} ?cout<<endl; }