大数乘法的实现也比较容易理解,相信看了下面的代码,细心分析下就知道了,具体也就不作什么详细分析了。
==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==
#include<stdio.h>
#include<string.h>
int main()
{
char a[100],b[100];
int ans[200],res[100][100]={0}; //这里一定要全部初始化为0
int sum=0 ,i ,j ,k=0,t ,alen ,blen;
scanf("%s%s",&a,&b);
alen=strlen(a);
blen=strlen(b);
//将a中每位数与b中每位数相乘,下面将结果存入数组中
for(i=0;i<alen;i++)
for(j=0;j<blen;j++)
{
res[i][j]=(a[i]-48)*(b[j]-48);
}
//计算res右下半个三角数的和
for(i=alen-1;i>=0;i--)
{
for(j=blen-1;j>=0;j--)
sum+=res[i+blen-1-j][j];
ans[k]=sum%10;
k++;
sum/=10;
}
//计算res左上半个三角数的和
for(i=blen-2;i>=0;i--)
{
for(j=0;j<=i;j++)
sum+=res[i-j][j];
ans[k]=sum%10;
k++;
sum/=10;
}
if(sum)
{
ans[k]=sum;
k++;
}
//输出结果
printf("ans = ");
for(t=k-1;t>=0;t--)
printf("%d",ans[t]);
printf("\n");
return 0;
}