大数相加,大数的长度不同,可以把大数反转后,短的大数补后导零,然后再相加,就可以避免相加过程中的判断长短。
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
char a[100], b[100];
int s[100];
while(~scanf("%s%s", a, b))
{
int lena = strlen(a);
int lenb = strlen(b);
reverse(a, a + lena);
reverse(b, b + lenb);
int maxn = max(lena, lenb);
for(int i = lena; i < maxn; i++)
a[i] = '0';
for(int i = lenb; i < maxn; i++)
b[i] = '0';
int c = 0;
for(int i = 0; i < maxn; i++)
{
int sum = a[i] + b[i] + c - 48*2;
s[i] = sum%10;
c = sum/10;
}
if(c)
s[maxn++] = c;
for(int i = maxn - 1; i >= 0; i--)
printf("%d", s[i]);
printf("\n");
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
}
return 0;
}