您的位置:首页 > 其它

大数相加

2014-06-26 20:58 141 查看
思想比较简单,没有进行优化。
#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';

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: