A+B。大数相加。

题目描述

 

实现一个加法器,使其能够输出a+b的值。

 

输入格式

 

输入包括两个数a和b,其中a和b的位数不超过1000位。

 

输出

 

可能有多组测试数据,对于每组数据,
输出a+b的值。

 

样例输入

6 8
2000000000 30000000000000000000

样例输出

14
30000000002000000000

#include
#include
int main()
{
    char a[10000],b[11111],d[11111];
    int c[11111],l;
    while(scanf("%s%s",&a,&b)!=EOF)
    { if(a[0]-'0'==0&&b[0]-'0'==0) {printf("%d\n",a[0]-'0');continue;  }
        memset(c,0,sizeof(c));
        int i,q,w,e;
        q=strlen(a);w=strlen(b);
        if(q         q--;w--;
        for(i=0;i             {
             if(a[q]-'0'+b[w]-'0'+c[i]>9)
             {c[i]+=a[q--]-'0'+b[w--]-'0'-10;
             c[i+1]=1;}
             else c[i]+=a[q--]-'0'+b[w--]-'0';}
          if(q>w)   for(i=e;i             {if(c[i]+a[i]-'0'>9)   {c[i]+=a[q--]-'0'-10; c[i+1]=1; }
            else c[i]+=a[q--]-'0';   }
          if(q             {if(c[i]+b[i]-'0'>9)   {c[i]+=b[w--]-'0'-10; c[i+1]=1; }
            else c[i]+=b[w--]-'0';   }
            for(i=l;i>=0&&!c[i];i--) ;//去掉前导0
                for(;i>=0;i--) printf("%d",c[i]);printf("\n");
}
}

 

 

测试数据略水,没有负数,代码问题很多,总之是个很烂的代码,0+0也是用了特判。

你可能感兴趣的:(刷题)