核心代码:
1.对每次操作都进行进位和取模操作
c[i+j-1]+=numa[i]*numb[j];
c[i+j]+=c[i+j-1]/10;
c[i+j-1]=c[i+j-1]%10;
//高精度乘法
#include<iostream>
#include<cstring>
using namespace std;
char a[105];
char b[105];
int numa[105];
int numb[105];
int c[500];
int main(){
cin >> a >> b;
int lena=strlen(a);
int lenb=strlen(b);
for(int i=lena-1;i>=0;i--) numa[lena-i]=a[i]-'0';
for(int i=lenb-1;i>=0;i--) numb[lenb-i]=b[i]-'0';
for(int i=1;i<=lena;i++){
for(int j=1;j<=lenb;j++){
c[i+j-1]+=numa[i]*numb[j];
c[i+j]+=c[i+j-1]/10;
c[i+j-1]=c[i+j-1]%10;
}
}
int lenc=lena+lenb;
while(c[lenc]==0 and lenc>1) lenc--;
for(int i=lenc;i>=1;i--){
cout << c[i];
}
return 0;
}