高精度乘法c语言(dev-c++)帮忙看下哪错了

#include<stdio.h>#include<stdlib.h>#include<string.h>main(){chara1[30],b1[30];inta[30... #include<stdio.h>
#include<stdlib.h>
#include<string.h>
main()
{
char a1[30],b1[30];
int a[30]={0},b[30]={0},c[30]={0},g=0,
d=0,e=0,f=0,k=0,i,j;//d
gets(a1);d=strlen(a1);
gets(b1);e=strlen(b1);
for(i=0;i<d;i++)
a[d-i-1]=a1[i]-48;
for(i=0;i<e;i++)
b[e-i-1]=b1[i]-48;
for(j=0;j<e;j++)
for(i=0;i<d;i++)
{
c[i+j]=c[i+j]+a[i]*b[j]+k;
c[i+j-1]=c[i+j-1]%10;
k=c[i+j-1]/10;
printf("%d ",c[i+j]);
}

system("pause");
return 0;
}
展开
 我来答
沁水心明
2013-07-23
知道答主
回答量:14
采纳率:0%
帮助的人:13万
展开全部
帮你修改了一下。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char a1[30],b1[30];
int a[30]={0},b[30]={0},c[30]={0},g=0,
d=0,e=0,f=0,k=0,i,j;//d
gets(a1);d=strlen(a1);
gets(b1);e=strlen(b1);
for(i=0;i<d;i++)
a[d-i-1]=a1[i]-48;
for(i=0;i<e;i++)
b[e-i-1]=b1[i]-48;
for(j=0;j<e;j++)
{
for(i=0;i<d;i++)
{
c[i+j]=c[i+j]+a[i]*b[j]+k;
k=c[i+j]/10;
c[i+j]=c[i+j]%10;
}
if(k)
{
c[i+j]=k;
k=0;
}
}
if(c[e+d-1])
printf("%d",c[e+d-1]);
for(i=e+d-2;i>=0;i--)
printf("%d",c[i]);

system("pause");
return 0;
}
循环计算部分错了。
for(j=0;j<e;j++)
for(i=0;i<d;i++)
{
c[i+j]=c[i+j]+a[i]*b[j]+k;
c[i+j-1]=c[i+j-1]%10;//这里明显错了,当i=j=0时,i+j-1=-1了。
k=c[i+j-1]/10;
printf("%d ",c[i+j]);
}
帐号已注销
2013-07-23 · TA获得超过1375个赞
知道小有建树答主
回答量:911
采纳率:0%
帮助的人:731万
展开全部
 for(j=0;j<e;j++)
      for(i=0;i<d;i++)
       {
        c[i+j]=c[i+j]+a[i]*b[j]+k; 
        c[i+j-1]=c[i+j-1]%10;//这里错了 i= 0 j=0 的时候 c[-1]这样写是错的
        k=c[i+j-1]/10;
        printf("%d ",c[i+j]);
       }

个人看法

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cat_4422
2013-07-23 · 贡献了超过103个回答
知道答主
回答量:103
采纳率:0%
帮助的人:18.5万
展开全部
没错的.如果没其他人回答就采纳我吧,你我都好.
追问
去死吧,运算都没运算过就别在这回答了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式