《c面向对象程序设计试题和答案题目》由会员分享,可在线阅读,更多相关《c面向对象程序设计试题和答案题目(17页珍藏版)》请在金锄头文库上搜索。
1、一、填空题(每空1分,共14分)1、观看以下程序:class pointpublic:void show() cout point endl;void main()(point pl;point *p;p=&p1;p1.show()/通过对象p1访问show函数p.show()/通过指针p访问show函数2、在C+类中可以包含 公共、保护 和 私有三种具有不同访问控制权的成员。3、定义类时,在类头中将使用关键字_class 来表示类定义的开始。4、如果一个类中至少有一个纯虚函数,则该类称为 抽象类。5、C+类的组成包括数据成员和 成员函数,友元是(是、不是)该类的成员函数。6、友员函数是用关键
2、字 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、关于构造函
3、数,下列说法不正确的是()。(A)构造函数名字和类名相同(B)构造函数在创建对象时自动执行(C)构造函数无任何函数返回类型(D)构造函数有且只有一个5、派生类可以访问其基类的()。(A)公有成员(B)保护成员(C)私有派生(D)公有和保护成员6、下列关于运算符重载的描述中,错误的是()。(A)运算符重载不可以改变操作数的个数(B)运算符重载不可以改变运算符的功能(C)运算符重载不可以改变结合方向(D)运算符重载不可以改变运算优先级7、C+语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是()(A)面向过程(B)面向对象 (C)安全性 (D)复用性8、对于类
4、中定义的成员,其隐含访问权限为()。A. publicB. protectedC. privateD. 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.
5、无意义C.变量p的地址值D.312、每个类()构造函数。(A)只能有一个(B)只可有公有的(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(void fun()(/显示调用基类
6、的函数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);return 0;(A) XY ? (B) YX? (C) X? (D) Y17、下面描述中,表达错误的是() (A)公有继承
7、时基类中的public成员在派生类中仍是public的(B) 公有继承是基类中的private成员在派生类中仍是private的(C) 公有继承时基类中的protected成员在派生类中仍是protected的(D) 私有继承时基类中的public成员在派生类中是private的18、定义析构函数时,应该注意()(A)其名与类名完全相同(B)返回类型是void类型(C)无形参,也不可重载(D)函数体中必须有delete语句19、对于在类中定义的静态数据成员,下面正确的说法是()A. 该类的每个对象中都有一个静态数据成员B. 对象创建时产生C. 在类外进行初始化D. 既可以在类外初始化,也可以在
8、类内初始化20、C+中声明常量的关键字是()。A. const B. externC. public D. enum三、改错题(每处2分,共6分)1、使用VC6打开考生文件夹下的工程projl,此工程包含一个源程序文件main.cpp,但该程序运行有问题,请改正main函数中的错误,使程序的输出结 果为:member=0member=5menber=10源程序文件main.cpp清单如下:#include class?MyClass(public:MyClass(int?i)(member=i;void?SetMember(int?m)(member=m;int?GetMember()cons
9、treturn?menber;void?print()contcoutmember=MEMBERENDL;private:int?member;voed?main()(MyClass?obj1; /更正obj1.print();MyClass?obj2(3);obj1.member=5; /更正MyClass.SetMember(10); /更正obj1.print();obj2.print();四、写出下列程序的执行结果(每小题5分,共20分) #include class Sample( int n;public:Sample(int i)(n=i;friend int add(Sampl
10、e &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;执行结果是:#includeint 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、#includeclass
11、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;coutd.B:n,d.C:nendl;执行结果是:#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
12、(4)抽象类(5)成员函数、不是(6)friend (7)11、11(8)动态申请内存空间、释放由new申请的空间二、选择题(每小题1.5分,共30分)1、D2、B3、C4、D5、D6、B7、B8、C9、C10、A11、D 12、 C 13、 D14、B15、C16、A17、 B 18、 C19、C20、A三、改错题(每错2分,共6分)MyClass obj1(0); obj1.SetMember(5); obj2.SetMember(10);四、写出下列程序的执行结果(每小题5分,共20分)(1)30(5 分)(2)79 (每个 2.5 分)(3)2020 (每个 2.5 分)(4)3(2 分)3(2 分)3(1 分)五、编程题(每题10分、共30分)1、#include #include class rectangle