加法
#include<bits/stdc++.h>
using namespace std;
int a1[1000],a2[1000],c[1000];
int main(){
string s1,s2;
cin>>s1>>s2;
int len1=s1.length(),len2=s2.length();
//反向保存
for(int i = 0;i<len1;i++)
a1[len1-i-1]=s1[i]-'0';
for(int i = 0;i<len2;i++)
a2[len2-i-1]=s2[i]-'0';
//加法运算
int maxx = max(len1,len2);
for(int i=0;i<maxx;i++){
c[i]+=a1[i]+a2[i];
c[i+1]=c[i]/10;
c[i]%=10;
}
int start=1000;
for(start-1;start>=0;start--){
if(c[start]!=0)
break;
}
if(start==-1)
cout<<0;
for(int i=start;i>=0;i--){
cout<<c[i];
}
return 0;
}
减法
#include<bits/stdc++.h>
using namespace std;
int a1[1000],a2[1000],c[1000];
int main(){
string s1,s2;
cin>>s1>>s2;
int len1=s1.length(),len2=s2.length();
//判断减数与被减数的大小,如果被减数小于减数,添加符号,并且交换位置
if(len1<len2||(len1==len2&&s1<s2)){
swap(s1,s2);
swap(len1,len2);
cout<<"-";
}
//反向保存
for(int i = 0;i<len1;i++)
a1[len1-i-1]=s1[i]-'0';
for(int i = 0;i<len2;i++)
a2[len2-i-1]=s2[i]-'0';
//加法运算
int maxx = max(len1,len2);
for(int i=0;i<maxx;i++){
c[i]+=a1[i]-a2[i];
if(c[i]<0){
c[i+1]-=1;
c[i]+=10;
}
}
int start=1000;
for(start-1;start>=0;start--){
if(c[start]!=0)
break;
}
if(start==-1)
cout<<0;
for(int i=start;i>=0;i--){
cout<<c[i];
}
return 0;
}
乘法
#include<bits/stdc++.h>
using namespace std;
int a1[1000],a2[1000],c[1000];
int main(){
string s1,s2;
cin>>s1>>s2;
int len1=s1.length(),len2=s2.length();
//反向保存
for(int i = 0;i<len1;i++)
a1[len1-i-1]=s1[i]-'0';
for(int i = 0;i<len2;i++)
a2[len2-i-1]=s2[i]-'0';
//乘法运算
for(int i=0;i<len1;i++){
for(int j=0;j<len2;j++){
c[i+j]+=a1[i]*a2[j];
c[i+j+1]+=c[i+j]/10;
c[i+j]%=10;
}
}
int start=1000;
for(start-1;start>=0;start--){
if(c[start]!=0)
break;
}
if(start==-1)
cout<<0;
for(int i=start;i>=0;i--){
cout<<c[i];
}
return 0;
}