《2022年c++面向对象程序设计试题和答案 .pdf》由会员分享,可在线阅读,更多相关《2022年c++面向对象程序设计试题和答案 .pdf(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、系名_班级_姓名_学号_密封线内不答题一、填空题(每空 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+类的组成
2、包括数据成员和_成员函数 _,友元 _是_(是、不是)该类的成员函数。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 )是给变量取一个别名,它引入了变量的同意词。名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 11 页 -第 2 页(A)指针
3、(B)引用(C)枚举(D)结构3、类成员的访问权限中,()只能被本类的成员函数和其友元函数访问。(A)share(B)public(C)private(D)protected 4、关于构造函数,下列说法不正确的是()。(A)构造函数名字和类名相同(B)构造函数在创建对象时自动执行(C)构造函数无任何函数返回类型(D)构造函数有且只有一个5、派生类可以访问其基类的()。(A)公有成员(B)保护成员(C)私有派生(D)公有和保护成员6、下列关于运算符重载的描述中,错误的是()。(A)运算符重载不可以改变操作数的个数(B)运算符重载不可以改变运算符的功能(C)运算符重载不可以改变结合方向(D)运算符
4、重载不可以改变运算优先级7、C+语言是从早期的C 语言逐渐发展演变而来的.与 C 语言相比,它在求解问题方法上进行的最大改进是()A)面向过程(B)面向对象(C)安全性(D)复用性8、对于类中定义的成员,其隐含访问权限为()。Apublic Bprotected Cprivate Dstatic 9、下面有关重载函数的说法中正确的是()A)重载函数必须具有不同的返回值类型;(B)重载函数形参个数必须不同;C)重载函数必须有不同的形参列表(D)重载函数名可以不同;10、有如下的对类“CSample”的说明,其中()是错误的。class CSample Aint a=23;BCSample();p
5、ublic:CCSample(int val);D CSample();11、在 int a=3,int*p=&a;中,*p 的值是()A.变量 a 的地址值 B.无意义C.变量 p 的地址值 D.3 12、每个类()构造函数。(A)只能有一个(B)只可有公有的名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 11 页 -系名_班级_姓名_学号_密封线内不答题(C)可以有多个(D)只可有缺省的13、在一个类中可以对一个操作符进行()重载。(A)1 种(B)2 种以下(C)3 种以下(D)多种14、在公有继承的情况下,基类非私有成员在派生类中的访问权限()(A)受限制(B)保持不变(
6、C)受保护(D)不受保护15、应在下列程序划线处填入的正确语句是()#include class Base public:fun()coutBase:funENDL;class Derived:public Base void fun()_/显示调用基类的函数fun()coutDerived:funfun();16、执行下面的程序将输出()#include class BASE char c;public:BASE(char n):c(n)virtual BASE()coutc;class DERIVED:public BASE char c;public:DERIVED(char n):BA
7、SE(n+1),c(n)DERIVED()coutc;int main()DERIVED a(X);名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 11 页 -第 4 页 return 0;A)XY (B)YX (C)X (D)Y 17、下面描述中,表达错误的是()(A)公有继承时基类中的public成员在派生类中仍是public的(B)公有继承是基类中的private成员在派生类中仍是private的(C)公有继承时基类中的protected成员在派生类中仍是protected的(D)私有继承时基类中的public成员在派生类中是private的18、定义析构函数时,应该注意(
8、)(A)其名与类名完全相同(B)返回类型是 void 类型(C)无形参,也不可重载(D)函数体中必须有 delete 语句19、对于在类中定义的静态数据成员,下面正确的说法是()A.该类的每个对象中都有一个静态数据成员B.对象创建时产生C.在类外进行初始化D.既可以在类外初始化,也可以在类内初始化20、C+中声明常量的关键字是()。A.const B.extern C.public D.enum 三、改错题(每处 2 分,共 6 分)1、使用 VC6打开考生文件夹下的工程proj1,此工程包含一个源程序文件main.cpp,但该程序运行有问题,请改正main 函数中的错误,使程序的输出结果为:
9、member=0 main.cpp 清单如下:MyClass MyClass(int i)member=i;void SetMember(int m)member=m;int GetMember()constreturn menber;void print()contcoutmember=MEMBERENDL;名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 11 页 -系名_班级_姓名_学号_密封线内不答题int member;main()MyClass obj1;/更正 _ obj1.print();MyClass obj2(3);obj1.member=5;/更正_ MyCl
10、ass.SetMember(10);/更正 _ obj1.print();obj2.print();四、写出下列程序的执行结果(每小题 5 分,共 20 分)1、#include 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()Sample s1(10),s2(20);coutadd(s1,s2)endl;执行结果是:2、名师资料总结-精品资料欢迎下载-名师精心整理-第 5
11、页,共 11 页 -第 6 页#include 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;coutadd(a,b),add(c,d)endl;执行结果是:3、#include 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:
12、n;void main()D d;名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 11 页 -系名_班级_姓名_学号_密封线内不答题d.B:n=10;d.C:n=20;coutd.B:n,d.C:nendl;执行结果是:4、#include class myclass int a,b;static int s;public:myclass(int x,int y)a=x;b=y;s+;void print()coutsshow()(2)公有、私有、保护(3)class(4)抽象类(5)成员函数、不是(6)friend(7)11、11(8)动态申请内存空间、释放由 new 申请的空
13、间二、选择题(每小题 1.5 分,共 30 分)1、D 2、B 3、C 4、D 5、D 6、B 7、B 8、C 9、C 10、A11、D 12、C 13、D 14、B 15、C 16、A17、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
14、、#include#include 名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 11 页 -系名_班级_姓名_学号_密封线内不答题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 分)coutrect
15、1.getarea()endl;(1分)2、(10 分)#include 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 b
16、1,car c1)/(1 分)return b1.weight+c1.weight;名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 11 页 -第 10 页 void main()car c1(1000);boat b1(2000);couttotalweight(b1,c1)endl;(1分)3、(10 分)#include class vehicle/定义汽车类(3 分)protected:int wheels;/车轮数float weight;/重量public:vehicle(int wheels,float weight);int get_wheels();float
17、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 vehic le:get_wheels()return wh
18、eels;float vehicle:get_weight()名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 11 页 -系名_班级_姓名_学号_密封线内不答题 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 页,共 11 页 -