C++
 
#include  < string >
#include 
< iostream >
using   namespace  std;

#define  MAX 200

unsigned 
int  num[MAX + 10 ];
unsigned 
int  num1[MAX + 10 ];

int  main()
{
    
string  str1,str2;
    cin
>> str1 >> str2;
    memset(num,
0 , sizeof (num));
    memset(num1,
0 , sizeof (num1));
    
int  len  =  str1.length(); int  index  =   0 ;
    
for  ( int  i = len - 1 ;i >= 0 ;i -- )
    {
        num[index
++ =  str1[i] - ' 0 ' ;
    }
    len 
=  str2.length();index  =   0 ;
    
for  ( int  i = len - 1 ;i >= 0 ;i -- )
    {
        num1[index
++ =  str2[i] - ' 0 ' ;
    }

    len 
=  str1.length() > str2.length()  ?  str1.length() : str2.length();

    
for  ( int  i = 0 ;i < len;i ++ )
    {
        num[i] 
+=  num1[i];
        
if  (num[i] >= 10 )
        {
            num[i] 
-=   10 ;
            num[i
+ 1 ] ++ ;
        }
    }
    
bool  flag  =   false ;
    
for  ( int  i = len;i >= 0 ;i -- )
    {
        
if  (flag || num[i])
        {
            flag 
=   true ;
            cout
<< num[i];
        }
    }
    
if  ( ! flag)
    {
        cout
<< " 0 " ;
    }

    
return   0 ;
}
 
 
 
 
c
 
 
int add(int l1,int l2,int a1[101],int a2[101],int c[101])
{//计算a1与a2的和,结果可在到c中,并返回c的长度
 int i;
 int len;
 int k=0;//进位
 if(l1<l2)len=l1;
 else len=l2;
 for(i=0;i<len;i++)
 {
  c[i]=(a1[i]+a2[i]+k)%10;
  k=(a1[i]+a2[i]+k)/10;
 }
 if(l1>len)
 {
  for(i=len;i<l1;i++)
  {
   c[i]=(a1[i]+k)%10;
   k=(a1[i]+k)/10;   
  }
  if(k!=0)
  {
   c[l1]=k;
   len=l1+1;
  }
  else len=l1;
 }
 else
 {
  for(i=len;i<l2;i++)
  {
   c[i]=(a2[i]+k)%10;
   k=(a2[i]+k)/10;   
  }
  if(k!=0)
  {
   c[l2]=k;
   len=l2+1;
  }
  else len=l2;
 }
 return len;