关于大整数乘法,小弟写了个程序,数字一大输出就不对了,求帮助
问题如题目描述,当数字很小的时候结果是正确的,如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 编辑 ]