#include
#include
using namespace std;
char *AddBigInt(char *str1, char *str2)
{
int carry = 0; //进位,初始化为0
int i = strlen(str1) - 1; //指向第一个加数的最低位
int j = strlen(str2) - 1; //指向第二个加数的最低位
int maxLen = strlen(str1) >= strlen(str2) ?
(strlen(str1) + 1) : (strlen(str2) + 1);
char *result = new char[maxLen + 1];
result[maxLen] = '\0'; //字符串最后一位为'\0'
int k = strlen(result) - 1; //指向结果数组的最低位
while((i >= 0)&&(j >= 0))
{
result[k] = ((str1[i] - '0') + (str2[j] - '0' + carry))%10 + '0';
carry = ((str1[i] - '0') + (str2[j] - '0' + carry))/10;
--i;
--j;
--k;
}
while(i >= 0)
{
result[k] = ((str1[i] - '0') + carry)%10 + '0';
carry = ((str1[i] - '0') + carry)/10;
--i;
--k;
}
while(j >= 0)
{
result[k] = ((str2[j] - '0') + carry)%10 + '0';
carry = ((str2[j] - '0') + carry)/10;
--j;
--k;
}
result[0] = carry + '0';
if(result[0] != '0')
return result;
else
return (result + 1);
}
int main()
{
char num1[] = "123456789323";
char num2[] = "45671254563123";
char *result = NULL;
result = AddBigInt(num1, num2);
cout< cout< return 0;
}
阅读(1882) | 评论(0) | 转发(0) |