高精度减法和加法差不多的,我就随便写了一下,可以记忆一下,直接当作模板来用就可以了
高精度减法
#include<bits/stdc++.h>
using namespace std;
int a[100];
int b[100];
int c[100];
char s1[100];
char s2[100];
int main()
{
cin>>s1>>s2;
a[0]=strlen(s1);
b[0]=strlen(s2);
c[0]=max(a[0],b[0]);
for(int i=1;i<=a[0];i++)
{
a[i]=s1[a[0]-i]-'0'; //倒序存字符串s1
}
for(int i=1;i<=b[0];i++)
{
b[i]=s2[b[0]-i]-'0';//倒序存字符串s2
}
int x=0; //借位
for(int i=1;i<=c[0];i++)
{
c[i]=a[i]-b[i]-x;
if(c[i]<0) //需要借位
{
c[i]+=10;
x=1;
}
else x=0;
}
while(c[0]>1&&c[c[0]]==0) c[0]--; //处理前导零
for(int i=c[0];i>=1;i--)
{
cout<<c[i]; //输出
}
return 0;
}
高精度减法
#include<bits/stdc++.h>
using namespace std;
int a[100];
int b[100];
int c[100];
char s1[100];
char s2[100];
int main()
{
cin>>s1>>s2;
a[0]=strlen(s1);
b[0]=strlen(s2);
c[0]=max(a[0],b[0]);
for(int i=1;i<=a[0];i++)
{
a[i]=s1[a[0]-i]-'0'; //倒序存字符串s1
}
for(int i=1;i<=b[0];i++)
{
b[i]=s2[b[0]-i]-'0';//倒序存字符串s2
}
int x=0; //进位
for(int i=1;i<=c[0];i++)
{
c[i]=a[i]+b[i]-x;
x=c[i]/10;
c[i]=c[i]%10;
}
while(c[0]>1&&c[c[0]]==0) c[0]--; //处理前导零
for(int i=c[0];i>=1;i--)
{
cout<<c[i]; //输出
}
return 0;
}