noi 大整數減法
阿新 • • 發佈:2019-01-07
#include<stdio.h> #include<string.h> char a[205]; char b[205]; int main() { int a1,b1,i,n; while(scanf("%s %s",a,b)!=EOF) { int c[205]= {0},d[205]= {0}; a1=strlen(a);///字元輸入兩個大整數 b1=strlen(b); for(i=1; i<=a1; i++)///將字串的每一位儲存在陣列中,注意這裡逆過來了,便於計算時對齊{ c[i]=a[a1-i]-'0'; } for(i=1; i<=b1; i++) { d[i]=b[b1-i]-'0'; } if(a1>b1)///將減的次數要取大的,多的課當做減0 n=a1; else n=b1; for(i=1; i<=n; i++)///前面已經反轉了所以從前面開始計算 { c[i]=c[i]-d[i]; if(c[i]<0)///如果減數小於被減數,高位減一,模仿豎式減法 { c[i+1]-=1; c[i]+=10; } } int x=0; ///去除強導0,即第一個非0數字前的0, ///注意最後一位不要去應為可能出現得數為0的情況 for(i=n; i>=2; i--) { if(c[i]==0) { x++; } else break; } for(i=n-x; i>=1; i--) { printf("%d",c[i]); } printf("\n"); } }