您好,欢迎访问三七文档
一、类和对象基本概念1)写出下面程序的运行结果:#includeiostream.hclassApple{private:staticintnTotalNumber;public:Apple(){nTotalNumber++;}~Apple(){nTotalNumber--;}staticvoidPrintTotal(){coutnTotalNumberendl;}};intApple::nTotalNumber=0;AppleFun(constApple&a){a.PrintTotal();returna;}intmain(){Apple*p=newApple[4];Fun(p[2]);Applep1,p2;delete[]p;p1.PrintTotal();}/*41*/2)写出下面程序的运行结果:#includeiostream.hclassSample{public:intv;Sample(){};Sample(intn):v(n){};Sample(Sample&x){v=2+x.v;}};SamplePrintAndDouble(Sampleo){couto.v;o.v=2*o.v;returno;}intmain(){Samplea(5);Sampleb=a;Samplec=PrintAndDouble(b);coutendl;coutc.vendl;Sampled;d=a;coutd.v;}/*9225*/3)下面的程序输出结果是:05请填空补足程序。所填内容不允许包含分号。classA{public:intval;A(____________){val=n;};___A&________GetObj(){return_*this_______;}};main(){Aa;couta.valendl;a.GetObj()=5;couta.valendl;}/*intn=0A&*this*/4)下面程序的输出是:3+4i5+6i请补足Complex类的成员函数。不能增加成员变量。#includeiostream#includestring.husingnamespacestd;classComplex{private:doubler,i;public:voidPrint(){coutr+iiendl;}};intmain(){Complexa;a=3+4i;a.Print();a=5+6i;a.Print();}/*Complex(){};Complex(char*s){r=s[0]-'0';i=s[2]-'0';}*/5)下面程序的输出是:10请补足Sample类的成员函数。不能增加成员变量。#includeiostream.hclassSample{public:intv;Sample(intn):v(n){};};intmain(){Samplea(5);Sampleb=a;coutb.v;}/*Sample(Sample&x){v=2*x.v;}*/6)下面程序的输出是:ThisHello请补足MyString类的成员函数。不能增加成员变量。#includeiostream.h#includestring.hclassMyString{char*p;public:MyString(char*s){p=newchar[strlen(s)+1];strcpy(p,s);}~MyString(){delete[]p;}constchar*c_str(){returnp;}};intmain(){MyStrings1(This),s2=s1;s2.Copy(Hello);couts1.c_str()endls2.c_str();}/*voidCopy(char*s){delete[]p;p=newchar[strlen(s)+1];strcpy(p,s);}MyString(MyString&o){p=newchar[strlen(o.p)+1];strcpy(p,o.p);}*/7)下面程序的输出结果是:5,55,5请填空#includeiostream.h#includestring.hclassBase{public:intk;Base(intn):k(n){}};classBig{public:intv;Baseb;Big________________{}Big________________{}};intmain(){Biga1(5);Biga2=a1;couta1.v,a1.b.kendl;couta2.v,a2.b.kendl;}/*Big(intn):v(n),b(n){}Big(Big&x):v(x.v),b(x.b.k){}*/二、运算符重载1)下面的MyInt类只有一个成员变量。MyInt类内部的部分代码被隐藏了。假设下面的程序能编译通过,且输出结果是:4,1请写出被隐藏的部分。(您写的内容必须是能全部放进MyInt类内部的,MyInt的成员函数里不允许使用静态变量)。#includeiostream.hclassMyInt{intnVal;public:MyInt(intn){nVal=n;}intReturnVal(){returnnVal;}………………….};main(){MyIntobjInt(10);objInt-2-1-3;coutobjInt.ReturnVal();cout,;objInt-2-1;coutobjInt.ReturnVal();}/*MyInt&operator-(intx){nVal-=x;return*this;}*/2)下面的程序输出结果是:(4,5)(7,8)请填空。填写的内容不能包含分号#includeiostream.hclassPoint{private:intx;inty;public:Point(intx_,inty_):x(x_),y(y_){};__________________________________________________;};____________operator(________________,constPoint&p){___________________________________;return_________________;}main(){coutPoint(4,5)Point(7,8);}/*friendostream&operator(ostream&o,constPoint&p);ostream&ostream&oo(p.x,p.y)endlo*/3)写一个二维数组类Array2,使得下面程序的输出结果是:0,1,2,3,4,5,6,7,8,9,10,11,next0,1,2,3,4,5,6,7,8,9,10,11,#includeiostreamusingstd::cout;usingstd::endl;intmain(){Array2a(3,4);inti,j;for(i=0;i3;i++)for(j=0;j4;j++)a[i][j]=i*4+j;for(i=0;i3;i++){for(j=0;j4;j++){couta(i,j),;}coutendl;}coutnextendl;Array2b;b=a;for(i=0;i3;i++){for(j=0;j4;j++){coutb[i][j],;}coutendl;}return0;}/*classArray2{private:int*p;intr,c;public:Array2(){p=NULL;}Array2(intr_,intc_):r(r_),c(c_){p=newint[r*c];}Array2(Array2&a):r(a.r),c(a.c){p=newint[r*c];memcpy(p,a.p,sizeof(int)*r*c);}Array2&operator=(constArray2&a){if(p)delete[]p;r=a.r;c=a.c;p=newint[r*c];memcpy(p,a.p,sizeof(int)*r*c);return*this;}~Array2(){if(p)delete[]p;}int*operator[](inti){returnp+i*c;}int&operator()(inti,intj){returnp[i*c+j];}};*/4)编写HugeInt类,使得下面程序的输出结果是:1)1000000890000002)1000000890000003)100004)100005)100016)100067)100000089010006#includeiostream#includestring.h#includestdlib.h#includestdio.husingstd::ostream;usingstd::cout;usingstd::cin;usingstd::endl;constintMAX=110;voidmain(){CHugeInta(1234545436342424354354365289899834234235);CHugeIntd(9999);CHugeInttemp=CHugeInt(100000088888888)+111112;CHugeInttemp2=111112+CHugeInt(100000088888888);cout1)tempendl;cout2)temp2endl;cout3)++dendl;cout4)d++endl;cout5)dendl;d+=5;cout6)dendl;cout7)d+temp;}/*classCHugeInt{private:intNumber[MAX];public:CHugeInt(){memset(Number,0,sizeof(Number));};CHugeInt(constchar*s){inti,j;memset(Number,0,sizeof(Number));for(i=strlen(s)-1,j=0;i=0;i--)Number[j++]=s[i]-'0';}CHugeInt(intn){chars[20];sprintf(s,%d,n);inti,j;memset(Number,0,sizeof(Number));for(i=strlen(s)-1,j=0;i=0;i--)Number[j++]=s[i]-'0';}CHugeIntoperator+(constCHugeInt&n)const{CHugeInttmp(*this);for(inti=0;iMAX;i++){tmp.Number[i]+=n.Number[i];//逐位相加if(tmp.Number[i]=10){//看是否要进位tmp.Number[i]-=10;tmp.Number[i+1]++;//进位}}returntmp;}constCHugeInt&operator++(){*this=(*this)+1;return*this;}constCHugeIntoperator++(intn){CHugeInttmp=*this;*this=(*this)+1;returntmp;}constCHugeIntoperator+=(constCHugeInt&n){*this=(*this)+n;return*this;}friendostream&operator(ostream&o,constCHugeInt&n);friendCHugeInto
本文标题:作业及其答案汇总
链接地址:https://www.777doc.com/doc-2709206 .html