思想比较简单,没有进行优化。
#include<iostream>
#define MAX 10
#include<cstring>
using namespace std;
void plus(const char * ,const char * ,char * );
int main()
{
char n1[10],n2[10],n3[10];
cin>>n1>>n2;
plus(n1,n2,n3);
int i =strlen(n3);
for (int dex = i-1; dex >= 0;dex--)
cout<<n3[dex];
cout<<endl;
}
void plus(const char * n1 ,const char * n2,char * n3)
{
cout<< 1<<endl;
int n11 = strlen(n1)-1;
int n22 = strlen(n2)-1;
int i =0 ;
bool flage = false;
for( ; (n11>-1) && (n22>-1) ;n11--, n22--,i++)
{
cout<< i<<endl;
if (n1[n11] + n2[n22]+flage -'0'-'0' >= 10)
{
n3[i] = n1[n11] + n2[n22]+flage -'0' -10;
flage = true;
}
else
{
n3[i] = n1[n11] + n2[n22]+flage -'0' ;
flage = false ;
}
cout<< i<<" "<<n3[i]<<endl;;
}
if (n11 != -1)
{
while (n11 !=-1)
{
if (n1[n11] +flage -'0' >= 10)
{
n3[i] = n1[n11] +flage - 10;
flage = true ;
}
else
{
n3[i] = n1[n11] +flage ;
flage = false ;
}
cout<< i<<" "<<n3[i]<<endl;
i++;
n11--;
}
}
else if (n22 != -1)
{
while (n22 !=-1)
{
if (n2[n22] +flage -'0' >= 10)
{
n3[i] = n2[n22] +flage - 10;
flage = true ;
}
else
{
n3[i] = n2[n22] +flage ;
flage = false ;
}
i++;
n11--;
}
cout<< i<<" "<<n3[i];
}
if (flage)
{
n3[i++] ='1';
}
n3[i] ='\0';
}