# include <stdio.h>
# include <iostream>
using namespace std;
// 字符串数字相加
#define MAXSIZE 130
#define BUFFERSIZE 200
void print_num(int num[], int numlen, int verse);
// 倒排文本数字串 ‘12345‘->{5,4,3,2,1}
int str2int_vers(int num[], char strnum[], int numlen);
int sum(int num1[],int num2[],int num_sum[]);
int main()
{
char s_num1[BUFFERSIZE];
char s_num2[BUFFERSIZE];
int i_num1[MAXSIZE] = { 0 };
int i_num2[MAXSIZE] = { 0 };
// 获取输入,以空格区分
cin >> s_num1 >> s_num2;
int num1_len = strlen(s_num1);
int num2_len = strlen(s_num2);
// 对字符串进行数字转换
str2int_vers(i_num1, s_num1, num1_len);
str2int_vers(i_num2, s_num2, num2_len);
//print_num(i_num1, num1_len, 1);
//print_num(i_num2, num2_len, 0);
int i_num_sum[MAXSIZE] = { 0 };
int sum_len = sum(i_num1, i_num2, i_num_sum);
print_num(i_num_sum, sum_len, 1);
return 0;
}
int sum(int num1[], int num2[],int num_sum[])
{
int i = 0;
// 10进制加法 倒序
for (i = 0; i < MAXSIZE; i++)
{
num_sum[i] += num1[i] + num2[i];
if (num_sum[i] >= 10)
{
num_sum[i + 1] = num_sum[i] / 10;
num_sum[i] = num_sum[i] % 10;
}
}
// 计算sum的长度
int len = MAXSIZE - 1;
for (len; len >= 0; len--)
if (num_sum[len] != 0) break;
return len+1;
}
void print_num(int num[], int numlen, int verse)
{
int i = 0;
if (verse == 0)
{
for (i = 0; i < numlen; i++)
cout << num[i];
}
else
{
for (i = numlen-1; i >= 0; i--)
cout << num[i];
}
cout << endl;
}
int str2int_vers(int num[], char strnum[], int numlen)
{
int i = 0;
while (strnum[i] != ‘\0‘)
{
num[numlen - i - 1] = strnum[i] - ‘0‘;
i += 1;
}
return i - 1;
}
最后附上python的版本。。。python,本身支持无限长整数计算
str = raw_input()
a,b = str.split(" ")
c = a+b
print c
原文:http://www.cnblogs.com/hanahimi/p/4806498.html