1、C+习题监控软件设计嘉兴学院一、 选择题(1)C+语言是从早期的C语言逐渐发展演变而来的。与C语言相比,它在求解问题方法上进行的最大改进是( )A)面向过程B)面向对象C)安全性D)复用性(2)下面有关重载函数的说法中正确的是( )A)重载函数必须具有不同的返回值类型;B)重载函数形参个数必须不同;C)重载函数必须有不同的形参列表D)重载函数名可以不同;(3)下列关于构造函数的描述中,错误的是( )A)构造函数可以设置默认参数; B)构造函数在定义类对象时自动执行C)构造函数可以是内联函数; D)构造函数不可以重载(4)下面关于C+中类的继承与派生的说法错误的是:( )A)基类的protect
2、ed成员在公有派生类的成员函数中可以直接使用B)基类的protected成员在私有派生类的成员函数中可以直接使用C)私有派生时,基类的所有成员访问权限在派生类中保持不变D)继承可以分为单一继承与多重继承(5)C+语言中提供内存申请运算符( ),它能可靠地控制内存的分配。A)deleteB)newC)posD)auto(6)若执行完以下语句,i和j的值分别为( )。inti;int&j=i;i=5;j=i+1;A) 5,5B) 5,6C) 6,6D) 6,5(7)类MyClass的定义如下:class MyClasspublic:MyClass()value=0;SetValue(int i)v
3、alue=i;private:int value;则对语句:MyClass *p,my;p=&my;正确的描述是( )。A)语句p=&my;是把对象my赋值给指针变量p;B)语句MyClass *p,my;会调用两次类MyClass的构造函数C)语句*p.SetValue(5)的调用是正确的D)语句p-SetValue(5)与my.SetValue(5)等价(8)通常拷贝构造函数的参数是( )。A)某个对象名B)某个对象的成员名C)某个对象的引用名D)某个对象的指针名(9)有以下类的定义,其中出错的位置是( )。class CsampleCsample();/ Apublic:int a=10
4、;/ BCsample(int a0);/ CCsample();/ D;(10)以下叙述中不正确的是( )。A)在类定义中,通常是用成员变量描述对象的属性;用成员函数描述对象的行为B)类的一个成员只能具有一种访问控制属性C)构造函数和析构函数是特殊的成员函数,因此不允许重载D)通过对象只能访问类的公有成员(11)友元函数的作用是( )。A)提高程序的效率B)加强类的封装性C)实现数据的隐蔽性D)增加成员函数的种类(12)以下关于派生机制的描述中,不正确的是( )。A)派生类不仅可以继承基类的成员,也可以添加自己的成员B)设置protected成员是为派生类访问基类成员之用C)采用不同的继承方
5、式,将限制派生类对基类成员的使用D)采用私有继承,派生类只能得到基类的公有成员(13)设有以下定义:#includeclass A1public:void show1() cout”class A1”endl; ;class A2: public A1public:void show2( ) cout”class A2”endl; ;class A3: protected A2public:void show3( ) cout”class A3”obj2被C+编译器解释为( )。A)operator (obj1,obj2)B)(obj1,obj2)C)obj2.operator (obj1)
6、D)obj1.operator (obj2)(16) 下面描述中,表达错误的是( )。A)公有继承时基类中的public成员在派生类中仍是public的B)公有继承时基类中的private成员在派生类中仍是private的C)公有继承时基类中的protected成员在派生类中仍是protected的D)私有继承时基类中的public成员在派生类中是private的(17) 一个C+类( )。A)只能有一个构造函数和一个析构函数B)可以有一个构造函数和多个析构函数C)可以有多个构造函数和一个析构函数 D)可以有多个构造函数和多个析构函数(18) 派生类的对象对它的基类成员中( )是可以访问的。A
7、)公有继承的公有成员B)公有继承的私有成员C)公有继承的保护成员D)私有继承的公有成员(19) 有关析构函数的说法不正确的是( )。A)析构函数有且只有一个B)析构函数无任何函数类型C)析构函数和构造函数一样可以有形参D)析构函数的作用是在对象被撤销时收回先前分配的内存空间(20) 以下属于析构函数特征的是()A)析构函数名与类名不能相同B)析构函数的定义必须在类体内C)析构函数可以带或不带参数D)在一个类中析构函数有且仅有一个(21) 设有以下类和对象的定义:class Apublic:int m;.;A k1,k2,*p1,*p2;则下面针对成员变量m的引用,正确的是()A) k1.m=1
8、;B) k2-m=2;C) p1.m=3;D) (*p2)-m=4;(22) 以下有关成员函数特征的叙述不正确的是()A) 成员函数一定是内联函数B) 成员函数可以重载C) 成员函数可以设置缺省数值D) 成员函数可以是静态的(23) 以下叙述中不正确的是()A) 一个类的友元函数可以无条件的使用这个类的私有成员B) 静态成员函数可以直接访问非静态数据成员C) 不可以声明抽象类的对象,但可以声明抽象类的指针变量D) 静态数据成员为类的所有对象所共享(24) 以下为Cint类的私有变量n赋初值的形式中不正确的是()A)class CintB) class Cintint n;int n;Cint(
9、):n(0)Cint(int v):n(v) .;C) class CintD) class Cintint n=10;int n;Cint(int m=10):n=m; ;(25) 对new运算符的下列描述中,()是错误的。A)它可以动态创建对象和对象数组B)用它创建对象数组时必须指定初始值C)用它创建对象时要调用构造函数D)用它创建的对象可以使用运算符delete来释放二、 填空1) 在用class定义一个类时,数据成员和成员函数的默认访问权限是。2) 已知int DBL(intn)returnn+n;和long DBL(longn)returnn+n;是一个函数模板的两个实例,则该函数模
10、板的定义是。3) 类是对象的;而对象则是类的。4) 定义内联函数所用的关键字,定义友元所用的关键字为。5) 如类中没有明确定义析构函数,清除对象的工作由来完成,原因是。6) 生成一个派生类对象时,先调用的构造函数,然后调用的构造函数。7) 在继承关系中,称为多重继承,称为单继承。8) 若在I/O流的输出中使用控制符setfill()设置填充字符,应包含的头文件是。9) 在私有继承关系下,基类的公有成员和保护成员将成为派生类中的成员,它们只能由来访问。10) 设A为test类的对象且赋有初值,则语句test B(A);表示。11) 在MFC应用程序中,方法使得程序员可以不直接面对一个物理文件而进
11、行文档的读写。12) 应用程序框架中,除类以外都有统一的命名规则。13) 视图类成员函数OnDraw()的作用是。14) ClassWizard类向导的页面主要用来为对话框类添加和删除与对话框控件关联的成员变量。15) 类是对象的(1);而对象则是类的具体(2)。16) 在C+中定义类时,通常是利用(3)描述对象的“特征”; 利用(4)描述对象的“行为”。17) 在私有继承关系下,基类的公有成员和保护成员将成为派生类中的(5)成员,它们只能由派生类的(6)来访问;基类的私有成员将成为派生类中的(7)成员。18) 利用“对象名.成员变量”形式访问的对象成员仅限于被声明为(8)的成员;若要访问其他
12、成员变量,需要通过(9)函数或(10)函数。19) 单目运算符作为类成员函数重载时有(11)形参;双目运算符作为(12)重载时只需声明其右操作数,作为(13)重载时需声明全部操作数。20) 除(14)类以外,应用程序框架中类的命名规则一般遵照如下要求:(15)21) MFC中的(16)结构用于数据处理工作,其中(17)用于管理和维护数据,(18)用来显示和编辑数据。22) 有关对话框的常用成员函数中,(19)用来显示对话框窗口,(20)用来实现对话框数据交换。三、 程序分析题1、写出下列程序的运行结果#include class CSample public: CSample(); void
13、Display();private: int i; static int k;CSample:CSample() i=0; k+;void CSample:Display() couti=i,k=kendl;int CSample:k=0;void main() CSample a,b; a.Display(); b.Display();2、写出下列程序的运行结果#include#includeclass person int age; char name10;public: void init(int i, char *str) age=i; strcpy(name,str); void d
14、isplay() coutname is age years old.n; ;void main() person demo; demo.init(30,li-ming); demo.display();3、写出下列程序的运行结果#include class base public: virtual void show() coutclass base show() is called.n;class derived:public basepublic: void show() coutshow();void main() base demo1; derived demo2; display(
15、&demo1); display(&demo2);4、指出下列程序的错误,并说明原因。#include class Apublic:void A(inti=0)m=i;void show()coutm;void A()private:intm;void main()Aa(5);a.m+=10;a.show();5、分析找出以下程序中的错误,说明错误原因,给出两种修改方案使之能正确运行。#includeclass Point int x,y; public: Point(int a=0,int b=0) x=a; y=b; void move(int xoffset,int yoffset) x
16、+=xoffset; y+=yoffset; int getx() return x; int gety() return y;class Rectangle:protected Point int length,width;public: Rectangle(int x,int y,int l,int w):Point(x,y) length=l;width=w; int getlength()return length; int getwidth()return width;void main() Rectangle r(0,0,8,4); r.move(23,56); coutr.get
17、x(),r.gety(),r.getlength(),r.getwidth()endl;6、指出下列程序段中的错误,并说明错误原因。class X /1public: /2 int readme() const return m; /3 void writeme(int i) m=i; /4private: /5 int m; /6; /7void f(X& x1,const X& x2) /8 x1.readme(); /9 x1.writeme(1); /10 x2.readme(); /11 x2.writeme(2); /12 /137写出下列程序的运行结果#include class
18、 Bpublic: B( ) ; B(int i, int j );void printb();private: int a,b;class A public: A( ) ; A(int i, int j); void printa();private: B c;A:A(int i, int j ):c(i,j);void A:printa( ) c.printb( );B:B(int i, int j ) a=i; b=j;void B:printb( ) couta=a,b=bendl;void main( ) A m(7,8); m.printa( );8、写出下列程序的运行结果#inc
19、lude#includeclass person int age; char *name;public: person(int i, char *str) int j; j=strlen(str)+1; name=new charj; strcpy(name,str); age=i; person() delete name; coutdestructor is called.n; void display() coutname is age years old.n; ;void main() person demo(30,Li-ming); demo.display();9、写出下列程序的运行结果#include class base public: virtual void show() coutclass base show() is called.n;class derived:public basepublic: void show() coutshow();void main() base demo1; derived demo2; display(&demo1); display(&demo2);
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2