1.反转
2.求和
3.反转
比较简单,就是要细心
#include<iostream> using namespace std; void bigNumAdd(char *a,char *b,char *c){ int len_a=strlen(a),len_b=strlen(b),len_c; int len=(len_a>len_b?len_b:len_a),flag=0; int len_m=(len_a>len_b?len_a:len_b); memset(c,'0',1005*sizeof(char)); //初始化 for(int i=0;i<len_a/2;i++){ //反转a,b char t=a[i]; a[i]=a[len_a-1-i]; a[len_a-1-i]=t; } for(int i=0;i<len_b/2;i++){ char t=b[i]; b[i]=b[len_b-1-i]; b[len_b-1-i]=t; } for(int i=0;i<len;i++){ //算长度相同的部分 int num=a[i]-'0'+b[i]-'0'+flag; flag=num/10; c[i]=num%10+'0'; } if(len_a>len_b){ //算长度不同的部分 for(int i=len;i<len_a;i++){ int num=a[i]-'0'+flag; flag=num/10; c[i]=num%10+'0'; } if(flag>0) c[len_a]=flag+'0'; } else if(len_a<len_b){ for(int i=len;i<len_b;i++){ int num=b[i]-'0'+flag; flag=num/10; c[i]=num%10+'0'; } if(flag>0) c[len_b]=flag+'0'; } else if(len_a==len_b) if(flag>0) c[len]=flag+'0'; if(c[len_m]=='0') len_c=len_m; //算结果的长度 else len_c=len_m+1; for(int i=0;i<len_c/2;i++){ //反转结果 char t=c[i]; c[i]=c[len_c-1-i]; c[len_c-1-i]=t; } for(int i=0;i<len_c;i++) cout<<c[i]; //输出结果 cout<<endl; } int main(){ for(int i=0;i<5;i++){ char a[1005],b[1005],c[1005]; cin>>a>>b; bigNumAdd(a,b,c); //cout<<c<<endl; } return 0; }