大整数乘法C语言实现
希望能帮到你们
#include <iostream>
#include<cstdio>
#include<algorithm>
#include <cstring>
#define MAX 210
using namespace std;
int main(int argc, char const *argv[])
{
char a[MAX],b[MAX];
int a1[MAX],b1[MAX],c[420];
gets(a);//输入两个整数
gets(b);
memset(a1,0,sizeof(a1));
memset(b1,0,sizeof(a1));
memset(c,0,sizeof(c));
int n1=strlen(a);
int n2=strlen(b),j;
j=0;
for (int i=n1-1;i>=0;i--)
{
a1[j++]=a[i]-'0';//两个整数反向存储
}
j=0;
for (int i=n2-1;i>=0;i--)
{
b1[j++]=b[i]-'0';
}
for (int i = 0; i < n1; i++)
{
for (int j = 0; j < n2; j++)
{
c[i+j]+=a1[i]*b1[j];//每位相乘存储
}
}
for (int i = 0; i < 420; ++i)
{
if(c[i]>=10)//处理进位
{
int result=c[i]/10;
c[i]=c[i]%10;
c[i+1]+=result;
}
}
bool panduan=false;
for (int i = 419; i >=0; i--)
{
if(c[i]!=0)//倒着找到需要的输出的开始位置
{
panduan=true;
}
if(panduan)
printf("%d",c[i] );
/* code */
}
if(!panduan)
printf("0" );//如果没有找到,说明计算结果是0,得单独处理一下
return 0;
}