a+b

代码很难看,将就吧

#include "stdio.h"
#include "string.h"
#define N 1005

int main()
{
char a[N];
char b[N];
char s[N];//和
int la,lb;
int c;//记录进位
int i;
while(scanf("%s%s",a,b)!=EOF)
{
la=strlen(a);
lb=strlen(b);
if(la<lb)
{
strcpy(s,b);
c=0;
for(i=0;i<la;i++)
{
if((a[la-i-1]+b[lb-i-1]+c-'0'-'0')<10)
{
s[lb-i-1]=a[la-i-1]+b[lb-i-1]+c-'0';
c=0;
}
else
{
s[lb-i-1]=a[la-i-1]+b[lb-i-1]+c-'0'-10;
c=1;
}
}
for(i=la;i<lb;i++)
{
if((b[lb-i-1]+c-'0')<10)
{
s[lb-i-1]=b[lb-i-1]+c;
c=0;
}
else
{
s[lb-i-1]=b[lb-i-1]+c-10;
c=1;
}
}
if(c!=0)
printf("%d",c);
}
else if(la==lb)
{
strcpy(s,a);
c=0;
for(i=0;i<lb;i++)
{
if((a[la-i-1]+b[lb-i-1]+c-'0'-'0')<10)
{
s[la-i-1]=a[la-i-1]+b[lb-i-1]+c-'0';
c=0;
}
else
{
s[la-i-1]=a[la-i-1]+b[lb-i-1]+c-'0'-10;
c=1;
}
}
if(c!=0)
printf("%d",c);
}

else if(la>lb)
{
strcpy(s,a);
c=0;
for(i=0;i<lb;i++)
{
if((a[la-i-1]+b[lb-i-1]+c-'0'-'0')<10)
{
s[la-i-1]=a[la-i-1]+b[lb-i-1]+c-'0';
c=0;
}
else
{
s[la-i-1]=a[la-i-1]+b[lb-i-1]+c-'0'-10;
c=1;
}
}
for(i=lb;i<la;i++)
{
if((a[la-i-1]+c-'0')<10)
{
s[la-i-1]=a[la-i-1]+c;
c=0;
}
else
{
s[la-i-1]=a[la-i-1]+c-10;
c=1;
}
}
if(c!=0)
printf("%d",c);
}
printf("%s\n",s);
}
return 0;
}
posted @ 2012-03-05 16:19  stdtrekman  阅读(342)  评论(0编辑  收藏  举报