高精度乘法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;
} 展开
#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;
} 展开
3个回答
展开全部
帮你修改了一下。
#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]);
}
#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]);
}
展开全部
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]);
}
个人看法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没错的.如果没其他人回答就采纳我吧,你我都好.
追问
去死吧,运算都没运算过就别在这回答了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询