1. 程式人生 > >noi 大整數減法

noi 大整數減法

#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"); } }