中山大学网络教育C++作业二

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1一、选择题(每小题2分,共20分)题号12345678910答案ABBDCDBDAD1.假定一个类的构造函数为A(intaa,intbb){a=aa;b=bb;},则执行Ax(4,5);语法后,x.a和x.b的值分别为()。A.4和5B.5和4C.4和20D.20和52.假定AB为一个类,则执行ABx;语句时将自动调用该类的()。A.有参构造函数B.无参构造函数C.拷贝构造函数D.赋值重载函数3.C++语言建立类族是通过()。A.类的嵌套B.类的继承C.虚函数D.抽象类4.在C++中,数据封装要解决的问题是()。A.数据规范化排列B.数据高速转换C.避免数据丢失D.切断了不同模块之间的数据的非法使用5.如果class类中的所有成员在定义时都没有使用关键字public、private或protected,则所有成员缺省定义为()。A.publicB.protectedC.privateD.static6.关于内联成员函数,以下说法错误的是:()。A.为了提高运行时的效率,对于较简单的函数可以声明为内联形式。B.内联函数体中不要有复杂结构(如循环语句和switch语句)。C.将函数体放在类的声明中或使用inline关键字可声明内联成员函数。D.内联函数的声明可以不必出现在内联函数第一次被调用之前。7.关于构造函数,以下说法错误的是:()。A.构造函数的作用是在对象被创建时使用特定的值构造对象,或者说将对象初始化为一个特定的状态。在对象创建时由系统自动调用。B.基类的构造函数可以被派生类所继承。C.如果程序中未声明,则系统自动产生出一个缺省形式的构造函数。D.允许为内联函数、重载函数、带缺省形参值的函数。8.关于析构函数,以下说法错误的是:()。A.完成对象被删除前的一些清理工作。B.在对象的生存期结束时系统自动调用它,再释放此对象所属的空间。C.如果程序中未声明析构函数,编译器将自动产生一个缺省的析构函数。D.析构函数可以带一个或多个参数。9.关于C++标识符的作用域与可见性,以下说法错误的是:()。2A.在同一作用域中,可以声明同名的标识符。B.块作用域中声明的对象是动态生存期的对象(习惯称局部生存期对象)。在文件作用域中声明的对象具有静态生存期。C.如果某个标识符在外层中声明,且在内层中没有同一标识符的声明,则该标识符在内层可见。D.对于两个嵌套的作用域,如果在内层作用域内声明了与外层作用域中同名的标识符,则外层作用域的标识符在内层不可见。10.关于C++的友元与友元函数,以下说法错误的是:()。A.友元是C++提供的一种破坏数据封装和数据隐藏的机制。可以使用友元函数和友元类。为确保数据的完整性及封装,应尽量不用或少用友元。B.友元函数是在类声明中说明的非成员函数,在它的函数体中能够通过对象名访问private和protected成员。C.通过将一个模块声明为另一个模块的友元,一个模块能够引用到另一个模块中本是被隐藏的信息。D.友元函数访问对象中的成员不必通过对象名。二、填空题(每小题2分,共20分)1.执行完C++程序中的三条语句:inta,b,*c=&a;int*&p=c;p=&b;后c指向_________b________。2.函数定义intFn2(){int*p;*p=9;cout*p;return0;},存在的问题是:__没有给指针P赋值______。3.已知'A'~'Z'的ASCII码为65~90,当执行charch=14*5+2;coutchendl;语句序列后,得到的输出结果为___H__.4..类A与类B都有public数据成员f,类C公有继承A和B,类C有public数据成员f,类D保护继承C,d是类D的一个对象,从d访问类A的成员f的表达式是:__dA::f_____,从d访问类C的成员f的表达式是:_dC::f__。5.C++将抽象出的数据成员、代码成员结合为一个整体的过程,称为____封装__。6._拷贝构造函数____是一种特殊的构造函数,其形参为本类的对象引用。当用类的一个对象去初始化该类的另一个对象时系统自动调用它实现赋值。7._虚基类_____主要用来解决多继承时可能发生的对同一基类继承多次而产生的二义性问题,为最远派生类提供唯一的基类成员,而不重复产生多次拷贝。8.异常处理中,当找到一个匹配的异常处理后,将从对应的关键字_try__开始到异常被抛掷处之间构造且尚未析构的所有自动对象进行析构。9.在类定义中,类说明以关键字class开始,其后跟__类名_______,它必须是一个有效的C++标识符。3三、阅读程序(每小题6分,共30分)。1.给出下列程序运行后的输出结果.#includeiostream.hvoidWF(intx,inty){x=x+y;y=x+y;coutsubs:x,y=x,yendl;}voidmain(){intx=8,y=15;coutmain:x,y=x,yendl;WF(x,y);x=2*x;coutmain:x,y=x,yendl;WF(x,y);coutmain:x,y=x,yendl;}Answer:Main:x,y=8,26Subs:x,y=23,38Main:x,y=16,15Subs:x,y=31.46Main:x,y=16.152.指出下面程序中的错误,并改正。#includeiostream.hclassTest{private:staticintx;public:virtualstaticintfunc();};intTest::x=20;intTest::func(){returnx;}voidmain(){coutTest::func()endl;Testa;couta.func();}Answer:Virtualstaticintfunc()4Virtual的作用是使该函数可以在不同的类中具体使用的时候再定义和使用Static是使类的所有对象成员共同维护同一个数据成员3.补充完整下面的程序。classLocation{private:intX,Y;public:voidinit(intinitX,intinitY);intGetX();intGetY();};voidLocation::init(intinitX,intinitY){X=initX;Y=initY;}intLocation::GetX(){returnX;}intLocation::GetY(){returnY;}#includeiostream.hvoidmain(){LocationA1;Location*pA1=&A1;//定义一个指向A1的指针pA1;PA1-init(6,8);//用pA1将对象A1成员X和Y分别初始化为6和8}4.在下面程序的横线处填上适当字句,使该程序执行结果为6。#includeiostream.hclassbase{intX;public:voidinit(intx){X=x;}//为X置值intGetnum(){returnx:}//取X值};voidmain()basetest;test.init(6);couttest.Getnum();}5.指出下面程序重点错误,在错误处说明出错原因。#includeiostream.hclassA{private:inta;5public:voidsetA(intx){a=x;}voidshowA(){couta=aendl;}};classB:privateA{private:intb;public:voidsetB(intx,inty){b=x;setA(y);}voidshowB(){showA();coutb=bendl;}};voidmain(){Bobj;obj.setA(53);obj.showA();obj.setB(53,58);obj.showB();}Answer:B是私有继承A,故B的对象不能直接访问A的成员。四、根据要求,编写程序(每小题15分,共30分)。1.根据下面的要求一步步写出正确的C++语句.注意:各个步骤之间是有先后顺序的。(1)定义两个整型变量value1,value2;(2)定义一个指向整型变量的指针pValue,将该指针初始化为指向value1;(3)将指针pValue改为指向变量value2;(4)通过pValue指针来间接地改变变量value2的值为20;(5)申请三个连续的整数空间,并将申请到空间的首地址赋值给pValue;(6)用cout输出所申请到的首地址值;(7)给第二个地址空间赋值10;(8)用cout输出第二个地址空间所在的地址;(9)释放所申请到的三个整数空间;(10)将指针pValue设置为不指向任何地址空间。Answer:(1)intvalue1,value2(2)int*pValue=&value6(3)pValue=&value2(4)*pValue=20;(5)PValue=newint[3];(6)coutpValue;(7)PValue[1]=10(8)cout&pValue[1](9)deletepValue;(10)pValue=02.编写程序,分析级数1!nnnn的收敛性。如果收敛,计算它的近似值,精确到10-6.longfactorial(intn){longproduct=1;for(inti=1;i=n;i++)produc*=I;returnproduct;}longpower(intm,intn){longproduct=1;for(inti=1;i=n;i++)product*=m;returnproduct;}voidmain(){intn=1;doublesum=0;white(1.0*factorial(n)/power(n,n)=0.000001){sum+=1.0*factorial(n)/power(n,n);7n++;}coutsum;}

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功