计算超出long long范围的数的减法
将数存入数组,考虑向前借一还有高位是0的情况
代码:
#include <stdio.h>
#include <string.h>
int main()
{
char a[1000],b[1000];
while(scanf("%s %s",a,b)!=EOF){
int l[1000];
int l1[1000];
int c,d,e,i,j,k,p,q;
c=strlen(a);
d=strlen(b);
if(d>=c) e=d;
if(c>d) e=c;
for(i=0;i<c;i++){
l[i]=a[c-1-i]-'0';
}
for(j=0;j<d;j++){
l1[j]=b[d-1-j]-'0';
}
for(k=0;k<d;k++){
l[k]=l[k]-l1[k];
if(l[k]<0){ // 向前借1
l[k]=l[k]+10;
l[k+1]--;
}
}
// 找到不为零的最高位
for(q=e-1;q>=0;q--){
if(l[q]!=0){
e=q;
break;
}
}
for(p=e;p>=0;p--){
printf("%d",l[p]);
}
printf("\n");
}
return 0;
}