大数相加 By yusijia November 04 2016 Updated:November 04 2016 Contents 123456789101112131415161718192021222324252627282930313233343536373839404142#include <cstdio>#include <cstring>#include <iostream>#include <string>using namespace std;string add(string str1, string str2){ int goBit = 0; // 存放进位 if (str1.length() < str2.length()) { //要求被加数更长或相等 string tmp = str1; str1 = str2; str2 = tmp; } string tmp (str1.length() - str2.length(), '0');//如果加数比被加数短,就在前面补0 str2 = tmp + str2; int len1 = str1.length(); for (int i = len1 - 1; i >= 0; --i) { //从后往前模拟普通的加法运算 int tmp = ((str1[i] - '0') + (str2[i] - '0') + goBit) ; str1[i] = tmp%10 + '0'; //取相加后的末位 goBit = tmp/10; //取进位 } if(goBit != 0){ //最后一次相加还有进位 char ch = '0' + goBit; return ch + str1; } return str1;}int main(){ string str1, str2; cin >> str1 >> str2; cout << add(str1, str2) << endl; return 0;}