关于大整数乘法,小弟写了个程序,数字一大输出就不对了,求帮助
问题如题目描述,当数字很小的时候结果是正确的,如15,100这类的,但是如输入12345678900和98765432100后输出的数据就不对了,以下是源代码,求帮助!!程序的目的是实现两个200位以内的大整数乘法!!
程序代码:#include<stdio.h>
#include<string.h>
int productx(int x,int y)
{
int product;
x=x-'0';
y=y-'0';
product=x*y;
return product;
}
int combination(int x,int y)
{
int add;
add=x+y;
return add;
}
int main()
{
char a[200],b[200];
int i,j,product,c[200][402]={{0}},num1,num2,n,flag=1;
scanf("%s",a);
scanf("%s",b);
n=strlen(a)+strlen(b);
for(i=0;i<strlen(a);i++)
{
for(j=0;j<strlen(b);j++)
{
c[i][j+i+1]+=productx(a[i],b[j]);
}
}
for(j=0;j<(2*strlen(b)+1);j++)
{
for(i=1;i<=strlen(a);i++)
{
c[0][j]=combination(c[0][j],c[i][j]);
}
}
for(j=strlen(b)+2;j>=0;j--)
{
if(c[0][j]>=10)
{
c[0][j-1]+=c[0][j]/10.0;
c[0][j]=c[0][j]%10;
}
}
for(j=0;j<n;j++)
if(flag==1&&c[0][j]==0) continue;
else
{
printf("%d",c[0][j]);
flag=0;
}
if(c[0][1]==0) printf("0");
}
[ 本帖最后由 绯苍幻想曲 于 2010-12-24 22:53 编辑 ]









