#include <iostream>
#include <sstream>//这里的头文件是sstream,不是stringstream,应该是缩写吧。
#include <cstring>
using namespace std;
stringstream os;
//C++实现大数加法,加法比乘法写起来要简单些,其实也不是很复杂
//菜鸡瑟瑟发抖
int a[100];
int b[100];
int c[100];
string x;
string y;
string add(string x,string y)
{
os.clear();
string z;
memset(a,0,sizeof(a));//初始化
memset(b,0,sizeof(b));//初始化
memset(c,0,sizeof(c));//初始化
for(int i=x.length()-1;i>=0;--i)
{
a[x.length()-1-i]=int(x[i]-'0');
}//将输入的字符串倒序存在整形数组里
for(int j=y.length()-1;j>=0;--j)
{
b[y.length()-1-j]=int(y[j]-'0');
}// 将输入的字符串倒序存在整形数组里
int len1=x.length();
int len2=y.length();
int sum=0;
int len=max(len1,len2);//这个地方是不用讨论加数与被加数的哪个位数更多
//因为全局数组默认都是0了,只需要加到两数的最大位数就可以了
for(int i=0;i<=len;++i)
{
c[i]=a[i]+b[i];
c[i]+=sum;
sum=c[i]/10;
c[i]%=10;
}
if(c[len]!=0)//可能会产生进位,需要稍微判断一下
{
os <<c[len];
}
for(int i=len-1;i>=0;i--)
{
os <<c[i];
}
os>>z;
return z;
}
int main(void)
{
while(cin>>x>>y)
{
cout <<add(x,y)<<endl;
}
return 0;
}
结果
//佛祖大大好
// _ooOoo_
// o8888888o
// 88" . "88
// (| -_- |)
// O\ = /O
// ____/`---'\____
// . ' \\| |// `.
// / \\||| : |||// \
// / _||||| -:- |||||- \
// | | \\\ - /// | |
// | \_| ''\---/'' | |
// \ .-\__ `-` ___/-. /
// ___`. .' /--.--\ `. . __
// ."" '< `.___\_<|>_/___.' >'"".
// | | : `- \`.;`\ _ /`;.`/ - ` : | |
// \ \ `-. \_ __\ /__ _/ .-` / /
// ======`-.____`-.___\_____/___.-`____.-'======
// `=---='
//
// .............................................
// 佛祖保佑 永无BUG
// 佛曰:
// 写字楼里写字间,写字间里程序员;
// 程序人员写程序,又拿程序换酒钱。
// 酒醒只在网上坐,酒醉还来网下眠;
// 酒醉酒醒日复日,网上网下年复年。
// 但愿老死电脑间,不愿鞠躬老板前;
// 奔驰宝马贵者趣,公交自行程序员。
// 别人笑我忒疯癫,我笑自己命太贱;
// 不见满街漂亮妹,哪个归得程序员?