《C++语言程序设计练习题三及答案.docx》由会员分享,可在线阅读,更多相关《C++语言程序设计练习题三及答案.docx(17页珍藏版)》请在第壹文秘上搜索。
1、一、单选题Is下列关于类的描述中,错误的是()A.类成员的访问权限有2种B.类包含数据成员和函数成员C.用类所定义出的变量称为对象D.类可认为是一种数据类型正确答案:A2、下列哪种思想不属于面向对象程序设计?()A.模块化B.抽象C继承D.封装正确答案:A3、假设编写一个教务管理系统,通过分析可以抽象出若干个类,其中应不包括下列哪个类?()A课程类B.学生类C.教师类D.宿舍类正确答案:D4、下列关于类的描述中,错误的是()oA.类的数据成员也被称作属性B.可以用流程图来描述类的设计C.面向对象中的分类被称作是抽象D.类的函数成员也被称作方法正确答案:B5、下列关于类定义语法的描述中,错误的是
2、()oA完整的函数定义代码通常放在类实现部分B.类定义代码通常分为声明和实现2部分C.定义类时需使用关键字classD.不同类的成员之间不能重名正确答案:D6、下列关于数据成员的描述中,错误的是()oA类中的数据成员之间不能重名B.数据成员的的类型只能是基本数据类型C.数据成员用于保存数据D.声明数据成员不能初始化正确答案:B7、下列关于函数成员的描述中,错误的是()oA函数成员的功能通常是对本类中数据成员进行处理B.函数成员的完整定义代码可以放在声明部分,此时该函数被默认为内联函数C.类中的函数成员之间可以重名,即重载函数D.函数成员访问本类中数据成员时需先定义,后访问正确答案:D8、下列关
3、于对象的描述中,错误的是()oA.个对象只属于某一个类B.对象是用类定义的变量,也可称为是类的实例。一个对象所占的内存空间等于其类中所有数据成员所占内存的总和D.一个类只能定义一个对象正确答案:D9、已定义一个圆的类CirCIe:classCircle(private:doubler;public:voidSetR(doblex)r=x;doubleGetArea()return3.14*r*r;);下列计算圆面积的代码中,正确的是()oA.Circlec;c.SetR(10.5);coutc.GetArea();B.Circlec;coutc.GetArea();C.Circlec;c.r=
4、10.5;cout3.14*c,r*c.r;D.Circlec;SetR(10.5);coutSetR(10.5);p-GetArea();B.Circlec,*p=c;p-SetR(10.5);p-GetArea();C.Circlec,*p=&c;p-GetArea();D.Circlec,*p=&c;p.SetR(10.5);p.GetArea();正确答案:A11、下列关于构造函数的描述中,错误的是()。A.定义构造函数的目的主要是为了在创建对象时初始化对象的数据成员B.构造函数在创建对象时被自动调用。每创建一个对象,构造函数即被调用一次C每个类可以定义多个构造函数,以实现不同的初始化
5、方法D.构造函数应定义为类的私有成员正确答案:D12、下列类ABC中所定义的构造函数,错误的是()oA.classABC(private:intx,y;public:ABC()x=0;y=0;ABC(ita,itb)x=a;y=b;;B.classABC(private:intx,y;public:ABC(ita=0,intb=0);):ABC:ABC(inta,intb)x=a;y=b;C.classABC(private:intx,y;public:ABC()x=O;y=O;);ABC:ABC(inta,itb)x=a;y=b;D.classABC(private:intx=O,y=O;p
6、ublic:voidAbc(ita,intb)x=a;y=b;);正确答案:D13、类ABC的默认构造函数是()。A.voidABC()BABC()CAbc()D.ABC()x=0;y=0;正确答案:B14、已定义类ABC:classABC(private:intx,y;public:);执行定义对象语句:ABCobj;则自动调用哪个构造函数?(A.ABC()B.不调用任何构造函数C依次调用这2个构造函数D.ABC(inta,intb)正确答案:A15、已定义类ABC:classABC(private:intx,y;public:ABC(inta,intb)x=a;y=b;);则下列定义对象语
7、句中,错误的是()oA.ABCobj(5,5+5);B.ABCobj(5,10);C.ABC*pobj=newABC(5,10);D.ABCobj;16、下列关于析构函数的描述中,错误的是()oA.析构函数在销毁对象时被自动调用。每销毁一个对象,析构函数即被调用一次B.通常,析构函数应定义为类的公有成员C.定义析构函数的目的是为了在销毁对象时清理对象的数据成员或其它一些善后工作D.每个类可以定义多个析构函数,以实现不同的清理方法正确答案:D17、下列关于拷贝构造函数的描述中,错误的是()。A每创建一个对象,拷贝构造函数即被调用一次B.拷贝构造函数与其它构造函数构成重载函数C.一个类如果未定义拷
8、贝构造函数,C+将自动为该类添加一个默认拷贝构造函数D.定义拷贝构造函数的目的主要是为了用一个已有的对象来初始化新创建的对象正确答案:A18、已定义类ABC:classABC(private:intx,y;public:ABC(ABC&a)X=a.x;y=a.y;);执行定义对象语句:ABCobjl,obj2(objl);则将会自动调用哪个构造函数?()A.ABC(ABC&a)B.依次调用ABC()和ABC(ABC&a)C.ABC()D.依次调用ABC()和ABC(inta,intb)正确答案:B19、下列关于对象的描述中,错误的是()oA可以调用对象中的所有函数成员B.可以访问对象中公有数据
9、成员的内存单元C执行对象定义语句时,计算机将为程序中的对象分配内存空间D.类可认为是一种数据类型,用类所定义的变量称为对象,也可称为是类的实例正确答案:A20、类ABC中定义了一个函数成员fun:VOidfUn()。编译器在编译时会将其函数头调整为()oA.voidfu(ABCthis)B.voidf(ABC*constthis)C.不做调整D.voidf(ABC*this)正确答案:B21、已定义一个圆形类CirCIe:classCircle(private:doubler;public:voidSetR(doblex)r=x;doubleGetArea()return3.14*r*r;);
10、使用Circle类来求一个半径为5的圆面积,下列语句中错误的是()oA.Circlec,*p=&c;p-SetR(5);coutGetArea();B.Circle.SetR(5);coutSetR(5);coutGetArea();deletep;D.Circlec;c.SetR(5);coutc,GetArea();正确答案:B22、已定义一个圆形类CirCIe:classCircleprivate:doubler;public:voidSetR(doblex)r=x;doubleGetArea()return3.14*r*r;);用Circle类定义一个对象数组:Circlec3;则下列
11、语句中错误的是()oA.for(iti=0;i3;i+)ci.SetR(i*2.5);cotci.GetArea()edl;B.Circle*p=&c;for(iti=0;iSetR(i*2.5);coutGetArea() =0;i-)p-SetR(i*2.5);coutGetArea() =0;i+)ci.SetR(i*2.5);coutci.GetAreaQ edl;正确答案:D23、使用类ABC做如下定义:ABCx,*p,y3;执行该定义语句将自动调用几次类ABC的构造函数?()A.5B.3C.0D.4正确答案:D24、函数间传递对象数据不能采用下列哪种方式?()A.被调函数直接访问主
12、调函数中的局部对象B.指针传递C.值传递D.引用传递正确答案:A25、通过值传递在函数间传递对象数据,形实结合时会自动调用下列哪个构造函数来初始化对象形参?()A.拷贝构造函数B.不带形参的构造函数C.带形参的构造函数D.析构函数正确答案:A26、下列关于常成员的描述中,错误的是()oA.常数据成员需在声明时直接初始化B.常函数成员只能调用其它常函数成员C.常函数成员只能读类中的数据成员,不能赋值修改D.在类中声明常成员时需使用关键字const正确答案:A27、在类中声明一个常函数成员fun,下列哪条语句是正确的?()A.voidfu()const;B.voidfn();C.costvoidf
13、u();D.voidconstfn();正确答案:A28、下列关于静态成员的描述中,错误的是()。A.静态数据成员不属于某个对象,是类的共享成员B.公有静态成员具有文件作用域C.静态数据成员要在类外定义和初始化D.私有静态成员具有块作用域正确答案:D29、已定义类A:classA(public:intx;staticinty;);intA:y=0;下列语句中错误的是()oA.Aa;a.x=1;A:y=1;B.Aa;a.x=1;a.y=1;C.A:y=1;D.A.x=1;A.y=1;正确答案:D30、如需将类B的函数成员:voidfu();定义成类A的友元函数,则需在类A中增加下列哪条语句?()A.friedvoidfu();B.voidfu();C.friendvoidA:fun();D.friedvoidB:fun();正确答案:D