C语言高精度乘法问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 17:05:44
#include "string.h"
#include "stdio.h"
#define MAX 200
void main()
{ int l1,l2,a[MAX]={0},b[MAX]={0},c[MAX]={0} ,i,j;
char *s1,*s2;
gets(s1);gets(s2);
l1=strlen(s1);
l1=strlen(s2);
for(i=l1-1;i>=0;i--)a[l1-1-i]=s1[i]-48;
for(i=l2-1;i>=0;i--)a[l2-1-i]=s2[i]-48;
for(i=0;i<=l2;i++)
{for(j=0;j<=l1-1;j++)
c[i+j]+=b[i]*a[i]+c[i+j];

}
for(i=0;i<=l2;i++)
{c[i+1]+=c[i]/10;
c[i]%=10;
}

for(;i>=0;i--) printf("%d",c[i]);

}
那里出错了????

是字符串输入问题,你最好是再定义俩个数组,再将指针变量指向他们,否则没有指向的指针得到的答案就很不一样了,你用tc调吧,我调了一下,不过你这逻辑错误太多,只能你自己试验了。用tc加监视器调试。

定义不完整