1.大数相加
1.1 思路:
数组模拟小学加法过程 就行
首先将 str1 ,str2 逆序存入 a[ ],b[ ],c[ ] 记录结果
Max=( str1,str2 ) + 1
for 0 to Max-1
a[ i ] 加入,b[ i ] 加入
c[ i + 1 ] = c [ i ] /10; //进位
c[ i ] = c[ i ] %10;
end
删除前导零
1.2 代码模板:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
int c[205],num;
void Plus(string A,string B){
int a[205],b[205];
int sa=A.size(),sb=B.size();
num=max(sa,sb)+1;
for(int i=0;i<sa;i++)
a[i]=A[sa-i-1]-'0';
for(int i=0;i<sb;i++)
b[i]=B[sb-i-1]-'0';
c[0]=0;
for(int i=0;i<num;i++){
if(i<sa)c[i]+=a[i];
if(i<sb)c[i]+=b[i];
c[i+1]=c[i]/10;
c[i]%=10;
}
while(!c[num]&&num>=1)num--;
}
int main(){
string A,B;
cin>>A>>B;
Plus(A,B);
for(int i=num;i>=0;i--)
cout<<c[i];
cout<<endl;
return 0;
}
1.3 函数主体

int c[205],num;
void Plus(string A,string B){
int a[205],b[205];
int sa=A.size(),sb=B.size();
num=max(sa,sb)+1;
for(int i=0;i<sa;i++)
a[i]=A[sa-i-1]-'0';
for(int i=0;i<sb;i++)
b[i]=B[sb-i-1]-'0';
c[0]=0;
for(int i=0;i<num;i++){
if(i<sa)c[i]+=a[i];
if(i<sb)c[i]+=b[i];
c[i+1]=c[i]/10;
c[i]%=10;
}
while(!c[num]&&num>=1)num--;
}
1.4 其他模板(更简单)

string Plus(string str1,string str2){
string str;
int len1=str1.size(),len2=str2.size();
if(len1<len2){
for(int i=1;i<=len2-len1;i++){
str1="0"+str1;
}
}
else{
for(int i=1;i<=len2-len1;i++){
str2="0"+str2;
}
}
len1=str1.size();
int num=0;
int t;
for(int i=len1-1;i>=0;i--){
t=str1[i]-'0'+str2[i]-'0'+num;
num=t/10;//进位
t%=10;
str=char(t+'0')+str;
}
if(num=0)
str=char(num+'0')+str;
return str;
}
2.大数相减
1.1 思路:
