C语言 大数相加与大数相减
发布时间:2020-12-14 02:23:51 所属栏目:大数据 来源:网络整理
导读:#include cstdio#include cstdlib#include cmath#include iostream#include cstringusing namespace std;char a[5000],b[5000];void add(){ int aa[5000]={0},bb[5000]={0},cc[5000]={0}; int la=strlen(a); int lb=strlen(b); strrev(a);strrev(b); int len
#include <cstdio> #include <cstdlib> #include <cmath> #include <iostream> #include <cstring> using namespace std; char a[5000],b[5000]; void add() { int aa[5000]={0},bb[5000]={0},cc[5000]={0}; int la=strlen(a); int lb=strlen(b); strrev(a);strrev(b); int len=la>lb?la:lb; for(int i=0;i<la;i++) aa[i]=a[i]-'0'; for(int i=0;i<lb;i++) bb[i]=b[i]-'0'; for(int i=0;i<len;i++) cc[i]=aa[i]+bb[i]; for(int i=0;i<4000;i++) { if(cc[i]>=10) { cc[i]-=10; cc[i+1]++; } } int j; for(j=4000;cc[j]==0;j--); for(int i=j;i>=0;i--) printf("%d",cc[i]); printf("n"); } void sub() { int flag=0;//0正1负 char c[5000]; int aa[5000]={0},cc[5000]={0}; int la=strlen(a); int lb=strlen(b); int len=la>lb?la:lb; if(la<lb||(la==lb&&strcmp(a,b)<0)) {flag=1;strcpy(c,a);strcpy(a,b);strcpy(b,c);}//保证a大于b strrev(a);strrev(b); la=strlen(a),lb=strlen(b); for(int i=0;i<la;i++) aa[i]=a[i]-'0'; for(int i=0;i<lb;i++) bb[i]=b[i]-'0'; for(int i=0;i<len;i++){ if(aa[i]>=bb[i]) cc[i]=aa[i]-bb[i]; else { aa[i]+=10; aa[i+1]--; cc[i]=aa[i]-bb[i]; } } int j; for(j=4000;cc[j]==0&&j>=0;j--); if(j==-1)printf("0n"); else { if(flag)printf("-"); for(int i=j;i>=0;i--) printf("%d",cc[i]); printf("n"); } } int main() { while(~scanf("%s %s",a,b)) { if(strcmp(a,"0")==0&&strcmp(b,"0")==0)break; //add(); sub(); } return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |