当前位置:文档之家› c面向对象程序设计试题和答案(经典题目)

c面向对象程序设计试题和答案(经典题目)

一、填空题(每空1分,共14分)1、观看以下程序:class point{public:void show() {cout<<”point”<<endl;}};void main(){point p1;point *p;p=&p1;______p1.show()_________//通过对象p1访问show函数_______p.show()_______//通过指针p访问show函数}2、在C++类中可以包含___公共___、___保护_____和___私有__三种具有不同访问控制权的成员。

3、定义类时,在类头中将使用关键字__class _____来表示类定义的开始。

4、如果一个类中至少有一个纯虚函数,则该类称为_______抽象类_________。

5、C++类的组成包括数据成员和______成员函数________,友元__是___(是、不是)该类的成员函数。

6、友员函数是用关键字_____friend_______修饰的非成员函数。

7、若有:int i;int &j=i;i=10;j=i+1;则i=____11_____,j=___11______。

8、 new的功能是_______分配内存空间______,delete的功能是______释放内存空间______________。

二、选择题(每小题1.5分,共30分)1、下列特性中不是面向对象程序设计语言所特有的是( D)。

(A)数据封装(B)继承(C)多态性(D)模板2、( B )是给变量取一个别名,它引入了变量的同意词。

(A)指针(B)引用(C)枚举(D)结构3、类成员的访问权限中,()只能被本类的成员函数和其友元函数访问。

(A)share (B)public (C)private (D)protected4、关于构造函数,下列说法不正确的是()。

(A)构造函数名字和类名相同(B)构造函数在创建对象时自动执行(C)构造函数无任何函数返回类型(D)构造函数有且只有一个5、派生类可以访问其基类的()。

(A)公有成员(B)保护成员(C)私有派生(D)公有和保护成员6、下列关于运算符重载的描述中,错误的是()。

(A)运算符重载不可以改变操作数的个数(B)运算符重载不可以改变运算符的功能(C)运算符重载不可以改变结合方向(D)运算符重载不可以改变运算优先级7、C++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是()(A)面向过程(B)面向对象(C)安全性(D)复用性8、对于类中定义的成员,其隐含访问权限为()。

A.public B.protectedC.private D.static9、下面有关重载函数的说法中正确的是()(A)重载函数必须具有不同的返回值类型;(B)重载函数形参个数必须不同;(C)重载函数必须有不同的形参列表(D)重载函数名可以不同;10、有如下的对类“CSample”的说明,其中()是错误的。

class CSample {A.int a=23;B.CSample();public:C.CSample(int val);D.~ CSample();11、在int a=3,int *p=&a;中,*p的值是( )A.变量a的地址值B.无意义C.变量p的地址值D.312、每个类()构造函数。

(A)只能有一个(B)只可有公有的(C)可以有多个(D)只可有缺省的13、在一个类中可以对一个操作符进行()重载。

(A)1 种(B)2 种以下(C)3 种以下(D)多种14、在公有继承的情况下,基类非私有成员在派生类中的访问权限()(A)受限制(B)保持不变(C)受保护(D)不受保护15、应在下列程序划线处填入的正确语句是()#include <iostream.h>class Base{public:void fun(){cout<<"Base::fun"<<ENDL;}};class Derived:public Base{ void fun(){_____________//显示调用基类的函数fun()cout<<"Derived::fun"<<ENDL;}};(A)fun(); (B)Base.fun(); (C)Base::fun(); (D)Base->fun();16、执行下面的程序将输出()#include <iostream.h>class BASE{char c;public:BASE(char n):c(n){}virtual ~BASE(){cout<<c;}};class DERIVED:public BASE{char c;public:DERIVED(char n):BASE(n+1),c(n){}~DERIVED(){cout<<c;}};int main(){DERIVED a('X');return 0;}(A)XY (B)YX (C)X (D)Y17、下面描述中,表达错误的是()(A)公有继承时基类中的public成员在派生类中仍是public的(B)公有继承是基类中的private成员在派生类中仍是private的(C)公有继承时基类中的protected成员在派生类中仍是protected的(D)私有继承时基类中的public成员在派生类中是private的18、定义析构函数时,应该注意()(A)其名与类名完全相同(B)返回类型是 void 类型(C)无形参,也不可重载(D)函数体中必须有 delete 语句19、对于在类中定义的静态数据成员,下面正确的说法是()A.该类的每个对象中都有一个静态数据成员B.对象创建时产生C.在类外进行初始化D.既可以在类外初始化,也可以在类内初始化20、C++中声明常量的关键字是()。

A. constB. externC. publicD. enum三、改错题(每处2分,共6分)1、使用VC6打开考生文件夹下的工程proj1,此工程包含一个源程序文件main.cpp,但该程序运行有问题,请改正main函数中的错误,使程序的输出结果为:member=0member=5menber=10源程序文件main.cpp清单如下:#include <iostream.h>class MyClass{public:MyClass(int i){member=i;}void SetMember(int m){member=m;}int GetMember()const{return menber;}void print()cont{cout<<"member="<<MEMBER<<ENDL;}private:int member;};voed main(){MyClass obj1; //更正_____________________________obj1.print();MyClass obj2(3);obj1.member=5; //更正__________________________MyClass.SetMember(10); //更正_______________________obj1.print();obj2.print();}四、写出下列程序的执行结果(每小题5分,共20分)1、#include<iostream.h>class Sample{ int n;public:Sample(int i){n=i;}friend int add(Sample &s1,Sample &s2);};int add(Sample &s1,Sample &s2){return s1.n+s2.n;}void main(){S ample s1(10),s2(20);cout<<add(s1,s2)<<endl;}执行结果是:2、#include<iostream.h>int add(int x,int y){return x+y+1;}double add(double x,double y){return x+y-1;}void main(){int a=2,b=4;double c=2.6,d=7.4;cout<<add(a,b)<<","<<add(c,d)<<endl; }执行结果是:3、#include<iostream.h>class A{public:int n;};class B:virtual public A{};class C:virtual public A{};class D:public B,public C{int getn(){return B::n;}};void main(){D d;d.B::n=10;d.C::n=20;cout<<d.B::n<<","<<d.C::n<<endl;}执行结果是:4、#include <iostream.h>class myclass{int a,b;static int s;public:myclass(int x,int y){a=x;b=y;s++;}void print(){cout<<s<<endl;}};int myclass::s=0;void main(){myclass m1(1,2),m2(4,5),m3(6,7);m1.print();m2.print();m3.print();}执行结果是:五、编程题(每题10分、共30分)1、测试一个名为rectangle的矩形类,其属性为矩形的左下角与右上角两个点的坐标,能计算矩形的面积。

(10分)2、定义一boat与car两个类,二者都有weight属性,定义二者的一个友元函数totalweight(),计算二者的重量和。

(10分)3、设计一个汽车类vehicle,包含的数据成员有车轮个数wheels和车重weight。

小车类car是它的派生类,其中包含载人数passenger_load。

每个类都有相关数据的输出方法。

在主程序中定义一个car类对象,对其车轮个数、车重、载人数进行设置并显示。

(10分)一、填空题(每空1分,共14分)(1)p1.show(); p->show() (2)公有、私有、保护(3)class (4)抽象类(5)成员函数、不是(6)friend (7)11、11 (8)动态申请内存空间、释放由new申请的空间二、选择题(每小题1.5分,共30分)1、D2、B3、C4、D5、D6、B7、B8、C9、C 10、A 11、D 12、C 13、D 14、B 15、C 16、A 17、B 18、C 19、C 20、A三、改错题(每错2分,共6分)MyClass obj1(0); obj1.SetMember(5); obj2.SetMember(10);四、写出下列程序的执行结果(每小题5分,共20分)(1)30 (5分)(2)7 9 (每个2.5分)(3)20 20 (每个2.5分)(4)3(2分)3(2分)3(1分)五、编程题(每题10分、共30分)1、#include <iostream.h>#include <math.h>class rectangle //(2分){private:int x1,y1,x2,y2; // (2分)public:rectangle(int xx1,int yy1,int xx2,int yy2) //(1分) {x1=xx1;y1=yy1;x2=xx2;y2=yy2;}int getarea() //(2分){return abs((x2-x1)*(y1-y2));}};void main(){rectangle rect1(3,7,8,5); (2分)cout<<rect1.getarea()<<endl; (1分)}2、(10分)#include <iostream.h>class car;(1分)class boat{private:int weight; //(1分)public:boat(int w):weight(w){} //(1分)friend int totalweight(boat b1,car c1); //(2分) };class car{ /(1分)private:int weight; (1分)public:car(int w):weight(w){};friend int totalweight(boat b1,car c1); (1分) };int totalweight(boat b1,car c1) //(1分){return b1.weight+c1.weight;}void main(){car c1(1000);boat b1(2000);cout<<totalweight(b1,c1)<<endl;(1分)}3、(10分)#include<iostream.h>class vehicle // 定义汽车类(3分){protected:int wheels; // 车轮数float weight; // 重量public:vehicle(int wheels,float weight);int get_wheels();float get_weight();float wheel_load();void show();};class car:public vehicle // 定义小车类(3分){int passenger_load; // 载人数public:car(int wheels,float weight,int passengers=4);int get_passengers();void show();};vehicle::vehicle(int wheels1,float weight1) //(1分) {wheels=wheels1;weight=weight1;}int vehicle::get_wheels(){return wheels;}float vehicle::get_weight()百度文库- 让每个人平等地提升自我{return weight;}void vehicle::show() (1分){cout << "车轮:" << wheels << "个" << endl;cout << "重量:" << weight << "公斤" << endl;}car::car(int wheels, float weight,int passengers) :vehicle(wheels, weight){passenger_load=passengers;}int car::get_passengers (){return passenger_load;}void car::show(){cout <<" 车型:小车" << endl;vehicle::show();cout << "载人:" << passenger_load << "人" << endl;cout << endl;}void main (){car car1(4,2000,5); (1分)cout << "输出结果" << endl;car1. show (); (1分)}11。

相关主题