高精度 加减乘除 【精华】

一、高精度加法
#include
#include
#include
int a[1010],b[1010],c[1010];
char s[1010];
int main(){
    int i,j,k,m,n;
    int alen,blen,clen;
    gets(s);
    alen=strlen(s);    
    for(i=alen-1;i>=0;i--)
        a[alen-i]=s[i]-'0';
    gets(s);
    blen=strlen(s);    
    for(i=blen-1;i>=0;i--)
        b[blen-i]=s[i]-'0';        
    clen=alen>blen?alen:blen;
    for(i=1;i<=clen;i++)
        c[i]=a[i]+b[i];
    for(i=1;i=10){
            c[i+1]++;
            c[i]-=10;
        }
    for(i=clen;i>=1;i--)
        printf("%d",c[i]);
    return 0;
}


二、高精度减法
#include
#include
#include
int a[1010],b[1010],c[1010];
char s[1010];
int main(){
    int i,j,k,m,n;
    int alen,blen,clen;
    gets(s);
    alen=strlen(s);    
    for(i=alen-1;i>=0;i--)
        a[alen-i]=s[i]-'0';
    gets(s);
    blen=strlen(s);    
    for(i=blen-1;i>=0;i--)
        b[blen-i]=s[i]-'0';            
    for(i=1;i<=alen;i++)
        c[i]=a[i]-b[i];
    for(i=1;i=1;i--)
        printf("%d",c[i]);
    return 0;
}


三、高精度乘法
#include
#include
#include
int a[1010],b[1010],c[2010];
char s[1010];
int main(){
    int i,j,k,m,n;
    int alen,blen,clen;
    gets(s);
    alen=strlen(s);    
    for(i=alen-1;i>=0;i--)
        a[alen-i]=s[i]-'0';
    gets(s);
    blen=strlen(s);    
    for(i=blen-1;i>=0;i--)
        b[blen-i]=s[i]-'0';        
    
    for(i=1;i<=alen;i++)
        for(j=1;j<=blen;j++)
            c[i+j-1]+=a[i]*b[j];
            
    for(i=1;i=10){
            c[i+1]+=c[i]/10;
            c[i]%=10;
        }
    for(i=alen+blen-1;i>=1;i--)
        printf("%d",c[i]);
    return 0;
}


四、高精度除法
#include
#include
#include
int a[1010],c[2010];
char s[1010],tmp;
int main(){
    int i,j,k,m,n;
    int alen,clen;
    gets(s);
    alen=strlen(s);    
    for(i=0;i0)
        printf("\n余数是:%d\n",k);    
    return 0;
}


你可能感兴趣的:(精华)