高精度的基础题吧,但是这里发现一个很奇怪的问题,memset初始化的问题,        memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));

这里我加了初始化之后就没有问题了,但是a和b这两个数组是直接赋值的,为什么我不对他们俩个初始化之后会出现这样的问题,有点每台弄明白,注意不加初始化的代码是有用例不能通过的,但是这个问题我确实没有想明白为什么,跟这节课的一个错题非常像,估计是同一个问题,解决之后再来更新这个文章吧。那道题是hj36,字符串加密。

#include<stdio.h>
#include<string.h>
char sa[10005],sb[10005];
int a[10005],b[10005],c[10005];
int main(){
    while(scanf("%s %s",sa,sb)!=EOF){
        int lena=strlen(sa);
        int lenb=strlen(sb);
        //数字反转过来 
        for(int i=0;i<lena;i++){
            a[i]=sa[lena-i-1]-'0';
        }
        for(int i=0;i<lenb;i++){
            b[i]=sb[lenb-i-1]-'0';
        } 

        int len=lena>lenb?lena:lenb;

        for(int i=0;i<len;i++){
            c[i]=a[i]+b[i]+c[i];
            if(c[i]>=10){
                c[i]=c[i]%10;
                c[i+1]=1;
            }
        } 

        if(c[len]==1){
            len++;
        }

        for(int i=len-1;i>=0;i--){
            printf("%d",c[i]);
        }
        printf("\n");
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        memset(c,0,sizeof(c));        
    }

}