大数加法(C语言)#includelt;stdio.hgt; #includelt;std
发布时间:2021-01-19 15:31:14 所属栏目:大数据 来源:网络整理
导读:关于大数加法的C语言版本 可完美通过 #includestdio.h#includestdlib.h#includestring.hchar A[10005];char B[10005];int fa,fb;void swap(char *a,int i,int j){char t = a[i]-'0';a[i] = a[j]-'0';a[j] = t;}void add(char *a,char *b){int la = strlen(a)
关于大数加法的C语言版本可完美通过#include<stdio.h> #include<stdlib.h> #include<string.h> char A[10005]; char B[10005]; int fa,fb; void swap(char *a,int i,int j) { char t = a[i]-'0'; a[i] = a[j]-'0'; a[j] = t; } void add(char *a,char *b) { int la = strlen(a),lb = strlen(b); int i,j,c=0,s,l; for(i=fa,j=la-1; i<=j; ++i,--j) swap(a,i,j); for(i=fb,j=lb-1; i<=j; ++i,--j) swap(b,j); for(i=fa; i<la||i<lb; ++i) { s = a[i] + b[i] + c; c = s/10; a[i] = s%10; } a[i] = c; l = c ? i : i-1; if(fa) printf("-"); for(i=l; i>=fa; --i) printf("%d",a[i]); } int cmp(char *a,char *b) { int i,la,lb; la = strlen(a); lb = strlen(b); if(la-fa>lb-fb) return 1; else if(la-fa<lb-fb) return 0; else { for(i=0; i<la&&a[i+fa]==b[i+fb]; ++i); return a[i+fa]>b[i+fb]; } } void minus(char *a,char *b) { char *t; int i,ft,lb,c,l,s; if(!cmp(a,b)) { t=a; a = b; b = t; ft = fa; fa = fb; fb = ft; } la = strlen(a); lb = strlen(b); for(i=fa,j); c = 0; l = -1; for(i=0; i+fa<la; ++i) { s = a[i+fa]-b[i+fb]-c>=0 ? 0 : 1; a[i+fa] = (10+a[i+fa]-b[i+fb]-c)%10; l = a[i+fa] ? i+fa : l; c = s; } if(l<0) printf("0"); else { if(fa) printf("-"); for(i=l; i>=fa; --i) printf("%d",a[i]); } } int main() { scanf("%s%s",A,B); fa = ('-'==A[0]); fb = ('-'==B[0]); if(fa^fb) minus(A,B); else add(A,B); } (编辑:均轻资讯网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |