#include<iostream>
#include<string.h>
#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
string a,b;
int a1[1001],b1[1001],c1[1001],n,m;
int c = 0;//进位
memset(a1,0,sizeof(a1));
memset(b1,0,sizeof(b1));
memset(c1,0,sizeof(c1));
a="";
b="";
cin >> a >> b;
int i,j;
for(i = a.length()-1,j=0;i >= 0;i --,j++)
a1[j] = a[i] - '0';
for(i = b.length()-1,j=0;i >= 0;i --,j++)
b1[j] = b[i] - '0';
int len = max(a.length() , b.length());
for(i = 0;i < len;i ++)
{
n = a1[i] + b1[i] + c;
m = n % 10;
c1[i] = m;
c = n / 10;
}
if(c)
{
c1[len] = c;
}
int flag = 0;
for(i = len;i >= 0;i --)
{
if(c1[i]&&flag==0)
{
flag = 1;
}
if(flag == 1)
cout << c1[i];
}
return 0;
}
int max(int a,int b)
{
return a > b ? a : b;
}
一、依次将a,b两个字符串转换为数字并且逆序存放,逆序后就会出现a1,b1数组中低位左对齐
二、每个数位相加再加进位,最后一位若有进位就存放在下一位
三、考虑c1数组高位有0的情况,并把0去掉