您的位置:首页 > 其它

大数加法的实现

2014-07-04 16:10 246 查看
思想:采用两个字符串进行输入 在把他们颠倒转存在int的数组内 对两数组进行相加 进位处理 颠倒转存到另一个字符数组内

最后输出字符数组即可

#include<stdio.h>
#include<string.h>
int a[205],b[205];
char ia[205],ib[205];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
memset(ia,0,sizeof(ia));
memset(ib,0,sizeof(ib));
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));

scanf("%s%s",ia,ib);
int alen=strlen(ia);
int blen=strlen(ib);
int i=alen-1,k=0;
while(i>=0)
a[k++]=ia[i--]-'0';
i=blen-1,k=0;
while(i>=0)
b[k++]=ib[i--]-'0';
int d=0;
k=alen>blen?alen:blen;
i=0;
while(i<k)
{
b[i]+=a[i]+d;
d=b[i]/10;
b[i]%=10;
i++;
}
if(d>0)
b[k]+=d;
else
k--;
for(i=k;i>=0;i--)
ib[k-i]=b[i]+'0';
ib[k+1]='\0';
printf("%s\n",ib);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: