大数乘法

来源:互联网 发布:淘宝九宫格图片显示 编辑:程序博客网 时间:2024/04/28 04:08

#include <iostream>
#include <string>

using namespace std;

char* Multiply(string num1,string num2)
{
 const char *p1=num1.c_str();
 const char *p2=num2.c_str();
 int strLen=strlen(p1)+strlen(p2);
 char *p=new char[strLen];
 int j,array=0;
 for (int k=0;k<strLen;k++)
 {
  p[k]='0';
 }
 p[strLen]='/0';
 for (int i=strlen(p1)-1;i>=0;i--)
 {
  array=0;
  for ( j=strlen(p2)-1;j>=0;j--)
  {
   array+=(p1[i]-'0')*(p2[j]-'0')+(p[i+j+1]-'0');
   p[i+j+1]=array%10+'0';
   array/=10;
   if(j==0)
    p[i+j]=array+'0';
  } 
 }
 return p;
}
int main()
{
 string num1,num2;
 cout<<"输入被乘数和乘数:"<<endl;
 cin>>num1>>num2;
 char *p;
 p=Multiply(num1,num2);
 int flag=1;
 for (int i=0;i<strlen(p);i++)
 {
  if (flag==1&&p[i]=='0')
  {
   flag=0;
   continue;
  }
  else
  {
   cout<<p[i];
   flag=0;
  }
 
 }
 cout<<endl;
 return 0;
}