Problem Description
求a+b的和
Input
输入有多组数据,每组数据只有1行为a和b。
Output
对于每组数据,输出a+b和。
Sample Input
1 2
5784937495784397385746286483 5784937495784397385746286483
Sample Output
3
11569874991568794771492572966
#include "stdio.h"
#include<malloc.h>
#include"string.h"
int main()
{ char a[100],b[100];
int *c,i,j,k=0,n,m,t=0,sum=0;
while(scanf("%s%s",a,b)!=EOF)
{ sum=0; k=0; t=0;
n=strlen(a); // 获取a的长度
m=strlen(b); // 获取b的长度
if(n>m) t=n;
else t=m;
c=(int *)malloc(sizeof(int )*(t+2));
for(t=0,i=n-1,j=m-1;i>=0&&j>=0;i--,j--) // 从最后位开始
{ sum=(a[i]-'0'+b[j]-'0')+t; a+b+进位的数
if(sum>9) // 当sum超过10时需要进位
{ c[k++]=sum%10; // 存放个位
t=sum/10; // 要进位的数
}
else { c[k++]=sum; t=0;}
}
if(i<0&&j<0&&t!=0) c[k++]=t;
while(j>=0) // 看哪个大数还没加完 ,继续相加
{ sum=b[j]-'0'+t;
if(sum>9)
{ c[k++]=sum%10;
t=sum/10;
}
else { c[k++]=sum; t=0;}
j--;
}
while(i>=0)
{ sum=a[i]-'0'+t;
if(sum>9)
{ c[k++]=sum%10;
t=sum/10;
}
else { c[k++]=sum; t=0;}
i--;
}
for(i=k-1; i>=0;i--)
printf("%d",c[i]);
printf("\n");
}
return 0;
}