C语言80位数高精度加法

来源:百度知道 编辑:UC知道 时间:2024/05/12 14:07:03
高手帮忙检查一下我的代码里的错误!谢谢呵!
#include <stdio.h>
void main()
{
int i,a[80],b[80],e[80],c,d;
for(i=0;i<=79;i++)
{if(getchar()=='\n'){c=i;break;}
scanf("%1d",&a[i]);
}
for(i=0;i<=79;i++)
{if(getchar()=='\n'){d=i;break;}
scanf("%1d",&b[i]);
}
for(i=0;i<=c-1;i++)
a[79-i]=a[c-1-i];
for(i=0;i<=79-c;i++)
a[i]=0;
for(i=0;i<=d-1;i++)
b[79-i]=b[d-1-i];
for(i=0;i<=79-d;i++)
b[i]=0;
for(i=79;i>=0;i--)
{if(a[i]+b[i]<10) e[i]=a[i]+b[i];
else {if (i=1) break;
else{e[i]=a[i]+b[i]-10;a[i-1]+=1;}
}
}
for(i=0;i<=79;i++)
{if(a[i]!=0) {d=i;break;}
}
for(i=d;i<=79;i++)
printf("%d",e[i]);
}
运行是没问题啦!只是输入数据计算结果不对!

整个思路就是错误的,getchhar()读到的数字都被忽略了,所以只有2,4,6....位的数字参加运算

正确的思路应该是以字符串形式读入,然后分离各个数字到数组里,最后相加输出

你能具体说说 那的问题吗?

我这可以运行!