[蓝桥杯][算法提高VIP]大数加法-题解(C语言描述)

在写这道题之前,我已两次在不同网站上碰到了这道题,已经是一名大二在校生,于是拿这道题来写我的第一篇博客(刚写不太规范,希望帮助到大家)。
解题思路:
一刷:川哥的吩咐(第一次碰到的大数加法做的题)
二刷(在一刷的基础上改进了代码)
碰到了这道题,重新整理了以下思路
本题就是高精度的加法,利用数组求和,进位
首先就是先用字符串存储你输入的 两个数,变换成整型存放到整型数组中,最后就是加法的运算了
注意事项:

  • 在进行运算后记得把数组清零
  • 注意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;
                                                          }
发布了14 篇原创文章 · 获赞 0 · 访问量 224

猜你喜欢

转载自blog.csdn.net/qq_43566782/article/details/103228446