总时间限制: 1000ms 内存限制: 65536kB 描述 程序填空,输出指定结果 #include <iostream> #include <cstring> #include <cstdlib> #include <cstdio> using namespace std; const int MAX = 110; class CHugeInt { // 在此处补充你的代码 }; int main() { char s[210]; int n; while (cin >> s >> n) { CHugeInt a(s); CHugeInt b(n); cout << a + b << endl; cout << n + a << endl; cout << a + n << endl; b += n; cout << ++ b << endl; cout << b++ << endl; cout << b << endl; } return 0; } 输入 多组数据,每组数据是两个非负整数s和 n。s最多可能200位, n用int能表示 输出 对每组数据,输出6行,内容分别是: 样例输入 99999999999999999999999999888888888888888812345678901234567789 12 6 6 样例输出 99999999999999999999999999888888888888888812345678901234567801 99999999999999999999999999888888888888888812345678901234567801 99999999999999999999999999888888888888888812345678901234567801 25 25 26 12 12 12 13 13 14
这题需要写三个构造函数,分别是无参,int参数,char *参数。还需要重载3个+运算符,分别对应CHugeInt+int,int+CHugeInt,CHugeInt+CHugeInt,还需要重载前置++和后置++,最后还需要一个<<的重载。代码如下:
#include <iostream> #include <cstring> #include <cstdlib> #include <cstdio> using namespace std; const int MAX = 110; class CHugeInt { // 在此处补充你的代码 private: char maxNum[210]; int len; public: CHugeInt(char * s){ strcpy(maxNum,s); int i=0,j=strlen(s)-1; while(i<j) { swap(maxNum[i],maxNum[j]); i++; j--; } //cout<<"init:"<<maxNum<<endl; len=strlen(s); //cout<<"Init success"<<endl; } CHugeInt(){ len=0; } CHugeInt(int n){ int i=0; if(n==0) { maxNum[i++]='0'; }else{ while(n) { maxNum[i++]=n%10+'0'; n=n/10; } } maxNum[i]='