题目描述
实现一个加法器,使其能够输出a+b的值。
输入格式
输入包括两个数a和b,其中a和b的位数不超过1000位。
输出
可能有多组测试数据,对于每组数据,
输出a+b的值。
样例输入
6?8
2000000000?30000000000000000000
样例输出
14
30000000002000000000
#include<stdio.h>
#include<string.h>
int main()
{
? ? char a[10000],b[22222],d[22222];
? ? int c[22222],l;
? ? while(scanf("%s%s",&a,&b)!=EOF)
? ? { if(a[0]-'0'==0&&b[0]-'0'==0) {printf("%dn",a[0]-'0');continue; ?}
? ? ? ? memset(c,sizeof(c));
? ? ? ? int i,q,w,e;
? ? ? ? q=strlen(a);w=strlen(b);
? ? ? ? if(q<w) {e=q;l=w;} else {e=w;l=q;}
? ? ? ? q--;w--;
? ? ? ? for(i=0;i<e;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<l;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<w) ?for(i=e;i<l;i++)
? ? ? ? ? ? {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也是用了特判。