12.2 大數減法
阿新 • • 發佈:2018-12-20
計算超出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; }