1、大整数乘法仅供参考#include#includeusing namespace std;void MUL_max(string a,int la,string b,int lb,int *c);/相乘函数void ADD_max(int * d,int *c,int la,int lb);/相加函数char * ZhuanH(string);void main()string a;string b;int *c=NULL;int *d=NULL;int la=0,lb=0;int i=0,j=0,k=0;couta;coutb;la=a.length();lb=b.length();/分配
2、2 维 C 数组,存储数组 a 和 b 的乘积c=new int*la;for(k=0;k=0;i-)for(j=lb-1;j=0;j-)num_a=ai-48;num_b=bj-48;if(k=num_a*num_b)=10)/判断乘积是否有进位if(mid!=0)/判断前一次相乘是否有进位cij+1=k%10+mid;elsecij+1=k%10;mid=k/10;else/没有进位if(mid!=0)/判断前一次相乘是否有进位cij+1=k+mid;elsecij+1=k;mid=0;if(mid!=0)ci0=k/10;/如果乘数个位和被乘数相乘,最后有进位/数组相加函数void AD
3、D_max(int *d,int *c,int la,int lb)int i=0,j=0;int mid=0;int num_a=0,num_b=0;int add=0,midnum=0;/将相乘得到的二维数组 C 各行错位相加,得到一位数组 dfor(i=la-1;i=0;i-)for(j=lb;j=0;j-)num_a=di+j+1;num_b=cij;add=num_a+num_b;if(add=10)/判断相加是否有进位if(midnum=1)di+j+1=add%10+1;elsedi+j+1=add%10;midnum=1;elsedi+j+1=add;midnum=0;if(midnum=1)d0=add/10;/转化函数char * ZhuanH(string src)char *dst=new char255;int i;for(i=0;i=src.length();i+)dsti=srci;dsti=0;return dst;