使用高精度的步骤:
- 利用string进行读入
- 将string存入数组中,数字的低位放在数组的前面,高位放在数组后面
- 利用数组进行运算
- 输出结果
代码如下:a[0]=x.size(); for(int i=1;i<=a[0];i++){ a[i]=x[a[0]-i]-'0'; } b[0]=y.size(); for(int i=1;i<=b[0];i++){ b[i]=y[b[0]-i]-'0'; }
代码:
加
#include<iostream>
using namespace std;
string x,y;
int a[10000],b[10000],c[100000];
int main(){
cin>>x>>y;
/* s1->a */
/*低位放在下标少的*/
a[0]=x.size();
for(int i=1;i<=a[0];i++){
a[i]=x[a[0]-i]-'0';
}
b[0]=y.size();
for(int i=1;i<=b[0];i++){
b[i]=y[b[0]-i]-'0';
}
int l=max(a[0],b[0]),len=0;
for(int i=1;i<=l;i++){
c[i]+=a[i]+b[i];
len=max(len,i);
if(c[i]>=10){
c[i]-=10;
c[i+1]++;
len=i+1;
}
}
for(int i=len;i>=1;i--) cout<<c[i];
return 0;
}
老师的代码(其实差不多):
减
#include<iostream>
using namespace std;
string x,y;
int a[10000],b[10000],c[100000];
int main(){
cin>>x>>y;
a[0]=x.size(),b[0]=y.size();
for(int i=1;i<=a[0];i++) a[i]=x[a[0]-i]-'0';
for(int i=1;i<=b[0];i++) b[i]=y[b[0]-i]-'0';
int l=max(a[0],b[0]),len=0;
for(int i=1;i<=l;i++){
if(a[i]<b[i]) a[i]+=10,a[i+1]--;
c[i]=a[i]-b[i];
}
while(l>0&&c[l]==0) l--;
for(int i=l;i>=1;i--) cout<<c[i];
return 0;
}
课后测: