如果答案有可能是负数,那我第二个高精度减法该咋改?
#include<bits/stdc++.h>
using namespace std;
char a[1005],b[1005],c[1005];
int d[1005],e[1005],f[1005]={0},g[1005];
void initandjia(char a[], char b[], char c[], int d[], int e[], int f[]){
cin >> a >> b >> c;
int len = max(strlen(b), strlen(c));
for(int i = strlen(b)-1, j = 1; i >= 0; i--, j++) d[j] = b[i] - '0';
for(int i = strlen(c)-1, j = 1; i >= 0; i--, j++) e[j] = c[i] - '0';
for(int i = 1; i <= len; i++){
f[i] += d[i] + e[i];
f[i+1] += f[i] / 10;
f[i] %= 10;
}
if(f[len+1]) len++;
}
void jianandoutput(char a[], int f[], int g[]){
int lenA = strlen(a);
for(int i = lenA-1, j = 1; i >= 0; i--, j++) g[j] = a[i] - '0';
int lenF = 0;
while(f[lenF+1]) lenF++;
for(int i = 1; i <= lenA; i++){
g[i] -= f[i];
if(g[i] < 0){
g[i] += 10;
g[i+1]--;
}
}
while(lenA > 1 && g[lenA] == 0) lenA--;
for(int i = lenA; i > 0; i--) cout << g[i];
cout << endl;
}
int main(){
initandjia(a, b, c, d, e, f);
jianandoutput(a, f, g);
return 0;
}