#include#include #include #include using namespace std;const int MAX = 110; //终于过了的.... // 要记得判断字符串长度!~class CHugeInt { char p[250]; public: CHugeInt(char* s){ strcpy(p,s); } CHugeInt(int s){ sprintf(p,"%d",s); } friend ostream& operator<<(ostream & cout, CHugeInt a){ cout< =strlen(PB)){ strcpy(pa,p); strcpy(pb,PB); } else{ strcpy(pb,p); strcpy(pa,PB); } int alen=strlen(pa); int blen=strlen(pb); int A,B,j=0; char result[250]; int i,m,n; for( i=0,m=alen-1,n=blen-1;n>=0;i++,m--,n--){ A=pa[m]-'0'; B=pb[n]-'0'; if(A+B+j>9){ result[i]=A+B-10+j+'0'; j=1; } else{ result[i]=A+B+j+'0'; j=0; } } int r; for(r=i;m>=0;r++,m--){ A=pa[m]-'0'; if(A+j>9){ result[r]=A+j-10+'0'; j=1; } else{ result[r]=A+j+'0'; j=0; } } if(j==1){ result[r]='1'; r++; } result[r]='\0'; n=strlen(result); for(int i=0,j=n-1;i =strlen(N)){ strcpy(pa,p); strcpy(pb,N); } else{ strcpy(pb,p); strcpy(pa,N); } int alen=strlen(pa); int blen=strlen(pb); int A,B,j=0; char result[250]; int i,m,n; for( i=0,m=alen-1,n=blen-1;n>=0;i++,m--,n--){ A=pa[m]-'0'; B=pb[n]-'0'; if(A+B+j>9){ result[i]=A+B-10+j+'0'; j=1; } else{ result[i]=A+B+j+'0'; j=0; } } int r; for(r=i;m>=0;r++,m--){ A=pa[m]-'0'; if(A+j>9){ result[r]=A+j-10+'0'; j=1; } else{ result[r]=A+j+'0'; j=0; } } if(j==1){ result[r]='1'; r++; } result[r]='\0'; n=strlen(result); for(int i=0,j=n-1;i > s >> n) { CHugeInt a(s); //构造函数 1 CHugeInt b(n); // 构造函数 2 cout << a + b << endl; //重载<< 重载+号 1 cout << n + a << endl; //重载+号 2 cout << a + n << endl; //重载+号 3 需要返回对象 b += n; cout << ++ b << endl; //重载++b cout << b++ << endl; //重载b++ cout << b << endl; } return 0;}
#include#include #include #include //错误原因...偷懒用int 相加...using namespace std;const int MAX = 110; class CHugeInt { char p[250]; int p1; public: CHugeInt(){ p[0]='\0'; p1=-1; } CHugeInt(char* s){ strcpy(p,s); p1=-1; } CHugeInt(int s){ p[0]='\0'; p1=s; } friend ostream& operator<<(ostream & cout, CHugeInt a){ if(a.p1!=-1){ cout< =0;i++,m--,n--){ A=pa[m]-'0'; B=pb[n]-'0'; if(A+B+j>9){ result[i]=A+B-10+j+'0'; j=1; } else{ result[i]=A+B+j+'0'; j=0; } } int r; for(r=i;m>=0;r++,m--){ A=pa[m]-'0'; if(A+j>9){ result[r]=A+j-10+'0'; j=1; } else{ result[r]=A+j+'0'; j=0; } } if(j==1){ result[r]='1'; r++; } result[r]='\0'; n=strlen(result); for(int i=0,j=n-1;i > s >> n) { CHugeInt a(s); //构造函数 1 CHugeInt b(n); // 构造函数 2 cout << a + b << endl; //重载<< 重载+号 1 cout << n + a << endl; //重载+号 2 cout << a + n << endl; //重载+号 3 需要返回对象 b += n; cout << ++ b << endl; //重载++b cout << b++ << endl; //重载b++ cout << b << endl; } return 0;}
#include#include #include #include using namespace std;const int MAX = 110; class CHugeInt { //将int 相加 全部改成了字符串相加 可是还是不过 TAT 错误原因:字符串长度未预先判断 想当然以为int输入的长度小于字符串 char p[250]; public: CHugeInt(){ p[0]='\0'; } CHugeInt(char* s){ strcpy(p,s); } CHugeInt(int s){ sprintf(p,"%d",s); } friend ostream& operator<<(ostream & cout, CHugeInt a){ cout< =0;i++,m--,n--){ A=pa[m]-'0'; B=pb[n]-'0'; if(A+B+j>9){ result[i]=A+B-10+j+'0'; j=1; } else{ result[i]=A+B+j+'0'; j=0; } } int r; for(r=i;m>=0;r++,m--){ A=pa[m]-'0'; if(A+j>9){ result[r]=A+j-10+'0'; j=1; } else{ result[r]=A+j+'0'; j=0; } } if(j==1){ result[r]='1'; r++; } result[r]='\0'; n=strlen(result); for(int i=0,j=n-1;i =strlen(N)){ strcpy(pa,p); strcpy(pb,N); } else{ strcpy(pb,p); strcpy(pa,N); } int alen=strlen(pa); int blen=strlen(pb); int A,B,j=0; char result[250]; int i,m,n; for( i=0,m=alen-1,n=blen-1;n>=0;i++,m--,n--){ A=pa[m]-'0'; B=pb[n]-'0'; if(A+B+j>9){ result[i]=A+B-10+j+'0'; j=1; } else{ result[i]=A+B+j+'0'; j=0; } } int r; for(r=i;m>=0;r++,m--){ A=pa[m]-'0'; if(A+j>9){ result[r]=A+j-10+'0'; j=1; } else{ result[r]=A+j+'0'; j=0; } } if(j==1){ result[r]='1'; r++; } result[r]='\0'; n=strlen(result); for(int i=0,j=n-1;i > s >> n) { CHugeInt a(s); //构造函数 1 CHugeInt b(n); // 构造函数 2 cout << a + b << endl; //重载<< 重载+号 1 cout << n + a << endl; //重载+号 2 cout << a + n << endl; //重载+号 3 需要返回对象 b += n; cout << ++ b << endl; //重载++b cout << b++ << endl; //重载b++ cout << b << endl; } return 0;}