高精度加法
#include<bits/stdc++.h>
using namespace std;
string s1,s2;
int a[605],b[605],c[605];
int main(){
//1.输入字符串
cin>>s1>>s2;
//2.把输入的字符存入 整数数组
//把字符串的数字 逆序存储到数字数组中
int len1 = s1.size();
int len2 = s2.size();
for(int i=0;i<len1;i++){
a[len1-i-1]=s1[i]-'0';
}
for(int i=0;i<len2;i++){
b[len2-i-1]=s2[i]-'0';
}
//确定循环次数 由s1 和 s2中最大的
// int len3 = len1>len2?len1:len2;//三目运算符
int len3 = max(len1,len2);
for(int i=0;i<len3;i++){
c[i] += a[i] + b[i];
//如果c里面的元素大于等于10 ,那么要进位
if(c[i]>=10){
c[i+1] += c[i]/10;
c[i] = c[i]%10;
}
}
//如果len3的下标不为0 ,则需要进位
if(c[len3]!=0) len3++;
//逆序输出
for(int i=len3-1;i>=0;i--){
cout<<c[i];
}
return 0;
}
高精度减法
#include<bits/stdc++.h>
using namespace std;
int a[10091],b[10091],c[10091];
string s1,s2;
bool cmp(string s1,string s2){
if(s1.size()<s2.size()) return 1;
if(s1.size()>s2.size()) return 0;
for(int i=0;i<s1.size();i++){
if(s1[i]!=s2[i]) return s1[i]<s2[i];
}
}
int main(){
cin>>s1>>s2;
if(s1==s2){
cout<<0;
return 0;
}
if(cmp(s1,s2)){
cout<<"-";
swap(s1,s2);
}
int len1=s1.size();
int len2=s2.size();
for(int i=0;i<len1;i++) a[len1-i]=s1[i]-'0';
for(int i=0;i<len2;i++) b[len2-i]=s2[i]-'0';
for(int i=1;i<=len1;i++){
c[i]+=a[i]-b[i];
if(c[i]<0){
c[i]+=10;
c[i+1]-=1;
}
}
len1++;
while(c[len1]==0) len1--;
for(int i=len1;i>=1;i--){
cout<<c[i];
}
return 0;
}