《2022年c面向对象程序设计试题和答案 .pdf》由会员分享,可在线阅读,更多相关《2022年c面向对象程序设计试题和答案 .pdf(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、vip 会员免费一、 填空题 (每空 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、 如果一个类中至少有一个纯虚函数,则该类称为_抽象类 _
2、。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 )是给变量取一个别名,它引入了变量的同意词。精品资料 - - - 欢迎下载 - -
3、 - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 12 页 - - - - - - - - - - vip 会员免费( A)指针(B)引用(C)枚举(D)结构3、类成员的访问权限中,()只能被本类的成员函数和其友元函数访问。( A)share (B)public (C)private (D)protected 4、关于构造函数,下列说法不正确的是() 。( A)构造函数名字和类名相同( B)构造函数在创建对象时自动执行( C)构造函数无任何函数返回类型( D)构造函数有且只有一个5、派生类可以访问其基类的() 。(A)公有成员(B)
4、保护成员(C)私有派生(D)公有和保护成员6、下列关于运算符重载的描述中,错误的是() 。(A)运算符重载不可以改变操作数的个数(B)运算符重载不可以改变运算符的功能(C)运算符重载不可以改变结合方向(D)运算符重载不可以改变运算优先级7、C+语言是从早期的C语言逐渐发展演变而来的. 与 C语言相比,它在求解问题方法上进行的最大改进是()(A)面向过程(B)面向对象(C)安全性(D)复用性8、对于类中定义的成员,其隐含访问权限为() 。 A public Bprotected C private Dstatic 9、下面有关重载函数的说法中正确的是()(A)重载函数必须具有不同的返回值类型;(
5、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.3 12、每个类()构造函数。(A)只能有一个(B)只可有公有的精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载
6、 名师归纳 - - - - - - - - - -第 2 页,共 12 页 - - - - - - - - - - vip 会员免费(C)可以有多个(D)只可有缺省的13、在一个类中可以对一个操作符进行()重载。(A)1 种(B)2 种以下(C)3 种以下(D)多种14、在公有继承的情况下,基类非私有成员在派生类中的访问权限()(A) 受限制(B)保持不变(C)受保护(D)不受保护15、应在下列程序划线处填入的正确语句是()#include class Base public: void fun()coutBase:funENDL; ; class Derived:public Base vo
7、id 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):BASE(n+1),c(n) DERIVED()coutc; ; int main() DERIVED a(X); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名
8、师归纳 - - - - - - - - - -第 3 页,共 12 页 - - - - - - - - - - vip 会员免费 return 0; (A)XY (B)YX (C)X (D)Y 17、下面描述中,表达错误的是()(A)公有继承时基类中的public成员在派生类中仍是public的(B)公有继承是基类中的private成员在派生类中仍是private的(C)公有继承时基类中的protected成员在派生类中仍是protected的(D)私有继承时基类中的public成员在派生类中是private的18、定义析构函数时,应该注意()(A)其名与类名完全相同(B)返回类型是 void
9、 类型(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 函数中的错误,使程序的输出结果为:member=0 membe
10、r=5 menber=10 源程序文件main.cpp 清单如下:#include class MyClass public: MyClass(int i)member=i; void SetMember(int m)member=m; int GetMember()constreturn menber; void print()contcoutmember=MEMBERENDL; private: 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 12 页 - - - - - - - - -
11、- vip 会员免费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 class Sample int n; public: Sample(int i)n=i; friend int add(Sample &s1,Sample &s2); ; int add
12、(Sample &s1,Sample &s2) return s1.n+s2.n; void main() Sample s1(10),s2(20); coutadd(s1,s2)endl; 执行结果是:2、精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 12 页 - - - - - - - - - - vip 会员免费#include int add(int x,int y) return x+y+1; double add(double x,double y) return x+y-1;
13、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:n; ; void main() D d; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -
14、第 6 页,共 12 页 - - - - - - - - - - vip 会员免费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 申请的空间二、选择题 (每小题 1.5 分
15、,共 30 分) 1、D 2、B 3、C 4、D 5、D 6、B 7、B 8、C 9、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 分
16、)1、#include #include 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 12 页 - - - - - - - - - - vip 会员免费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 a
17、bs(x2-x1)*(y1-y2); ; void main() rectangle rect1(3,7,8,5); (2 分) coutrect1.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 分) pu
18、blic: 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; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 9 页,共 12 页 - - - - - - - - - - vip 会员免费 void main() car c1(1000); boat b1(2000); couttota
19、lweight(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 get_weight(); float wheel_load(); void show(); ; class car:public vehicle / 定义小车类(3 分) int passenger_load; / 载人数public:
20、 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() 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - -
21、-第 10 页,共 12 页 - - - - - - - - - - vip 会员免费 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
22、() cout 车型 :小车 endl; vehicle:show(); cout 载人 : passenger_load 人 endl; cout endl; void main () car car1(4,2000,5); (1 分) cout 输出结果 endl; car1. show (); (1 分) 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 11 页,共 12 页 - - - - - - - - - - 文档编码:KDHSIBDSUFVBSUDHSIDHSIBF-SDSD587FCDCVDCJUH 欢迎下载 精美文档欢迎下载 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 12 页,共 12 页 - - - - - - - - - -