在写这道题之前,我已两次在不同网站上碰到了这道题,已经是一名大二在校生,于是拿这道题来写我的第一篇博客(刚写不太规范,希望帮助到大家)。
解题思路:
一刷:川哥的吩咐(第一次碰到的大数加法做的题)
二刷(在一刷的基础上改进了代码)
碰到了这道题,重新整理了以下思路
本题就是高精度的加法,利用数组求和,进位
首先就是先用字符串存储你输入的 两个数,变换成整型存放到整型数组中,最后就是加法的运算了
注意事项:
- 在进行运算后记得把数组清零
- 注意max指向的是最高位,而有的时候算到最高位时还需再进一位,此时只需将max+1即可
# include<stdio.h>
# include<string.h>
int main()
{
char a[1000],b[1000];
int sum[1000],sum1[1000],sum2[1000];
int len1,len2,i,j,max;
while(scanf("%s%s",a,b)!=EOF)
{
memset(sum,0,sizeof(sum));
memset(sum1,0,sizeof(sum1));
memset(sum2,0,sizeof(sum2));
len1=strlen(a);len2=strlen(b);
for(i=0,j=len1-1;j>=0;i++,j--)
sum1[i]=a[j]-'0';
sum1[i]='\0';
for(i=0,j=len2-1;j>=0;i++,j--)
sum2[i]=b[j]-'0';
sum2[i]='\0';
max=len1>=len2?len1:len2;
for(i=0;i<max;i++)
{
sum[i]+=sum1[i]+sum2[i];
sum[i+1]=sum[i]/10;
sum[i]%=10;
}
if(sum[max]!=0)
max++;
for(i=max-1;i>=0;i--)
printf("%d",sum[i]);
printf("\n"); } return 0;
}