还剩16页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
知识模块五面向对程序设计基础
一、选择题
1.不是构造函数的特征A.构造函数的函数名与类名相同;B.构造函数可以重载;C.构造函数可以设置缺省参数;D.构造函数必须指定类型说明
2.是析构函数的特征A、析构函数可以有一个或多个参数;B、析构函数名与类名不同;C、析构函数的定义只能在类体内;D、一个类中只能定义一个析构函数;
3.要运行一个C语言编写的应用程序如下main{printf,zhello world;}在VC6的开发环境中,应该建立哪种类型的工程?A,Win32ApplicationB,Win32Console ApplicationC,MFC AppWizardexeD,Utility Project
4.关于VC6建立的工程的说法,正确的是.A,工程只能包含.cpp和・h类型的文件B,工作区文件的后缀是.dspC,用鼠标双击工作区文件可以打开整个工程D,在VC的FileView中可以看到工程中所有的文件,包括工作区文件,项目文件等
5.在VC6中提供了成员方法的自动列表和方法参数的自动提示功能,但有时不能正常显示,这是应该删除该工程目录下那种后缀类型的文件后,再次打开工程,就可以正常提示了A,clwB,nebC,optD,aps
6.有关句柄handle的说法,下列不正确的是..A句柄是一个4字节长的整数值B句柄用来标识应用程序中不同的对象或同类对象中的不同实例C消息是句柄的一种D画笔的句柄类型是HPEN,画刷的句柄类型是HBRUSH
7.C++对C语言作了很多改进,下列描述中使得C语言发生了质变,从面向过程变成了面向对象・.A.增加了一些新的运算符;..B.允许函数重载,并允许设置缺省参数;..C.规定函数说明必须用原型;・.D.引进了类和对象的概念;8,下列描述中,是错误的A、内联函数主要解决程序的运行效率问题;
8.内联函数的定义必须出现在内联函数第一次被调用之前;C.内联函数中可以包括各种语句;D.对内联函数不可以进行异常接口声明;
9.在C++中,关于下列设置缺省参数值的描述中,是正确的A、不允许设置缺省参数值;B、在指定了缺省值的参数右边,不能出现没有指定缺省值的参数;C、只能在函数的定义性声明中指定参数的缺省值;D.设置缺省参数值时,必须全部都设置;
10.不是构造函数的特征A.构造函数的函数名与类名相同;B.构造函数可以重载;cout/,constructing object:x=z/xendl;;void funcintnstatic Sampleobj n;void mainfunc1;func10;4分析以下程序的执行结果#includeiostream.hclass Sampleint x,y;public:Sample{x=y=0;}Sampleint a,int b{x=a;y=b;}void disp{cout〈〃x=y=,,«yendl;;void main{Sample s2,3,*p=s;p-disp;}5分析以下程序的执行结果#includeiostream.hclass Samplepublic:int x;int y;void dispO{cout〈〃x=〃y=〃y〈〈endl;;void mainintSample::*pc Samples;pc=Sample::x;s.*pc=10;pc=Sample::y;s.*pc=20;s.dispO;分析以下程序的执行6结果#includeiostream.hclass Sample int x,y;public:Sample{x=y=0;}Sample int a,intb{x=a;y=b;}void dispcout〈〃x=〃y=/zyendl;void mainSample si,s22,3;
51.disp;
52.disp;.分析以下程序执行的结.#includeiostream,h.clas.Sampl.•in.x,y.public.Sample.{x=y=0;.Sample in.a,in.b.{x=a;y=b;.Sample.•〜if x二二y.coutz,x=y,,endl.els.cout,zx!=y,,endl.voi.disp.cout〃x=〃〈x〃,y=zyendl.*.voi.main.*Sampl.si2,
3.si.disp.
51.^Sample..分析以下程序的执行结.#includeiostream,h.clas.Sampl.•in.x,y.public.Sample.{x=y=0;.Sample in.a,in.b.{x=a;y=b;.^Sample.*if x==y.cout,,x=y/,endl.els.coutz,x!=y,zendl.•voi.disp.*cout〃x=〃x〃,y=/zyendl.voi.main.Sampl.si,s22,
3.
51.disp.
52.disp.•
9.分析以下程序的执行结.#includeiostream,h.#includestdlib.h.clas.Sampl.public.in.x,y.Sample{x=y=0;.Sample in.a,in.b{x=a;y=b;,voi.disp.•cout,,x=,,xz,,y=,yendl.*Sample.*if x==y.cout,,x=y,,endl.els.cout,,x!=y/,endl.voi.main.*Sampl.si2,
3.si.disp.if si.x==
2.exit
0.•
10.分析以下程序的执行结.#includeiostream,h.clas.Sampl.•in.x,y.public.Sample{x=y=0;.Sample in.a,in.b{x=a,y=b;.Sample.*if x==y.〜cout,zx=yz,endL els.coutz,x!=y,,endl.•voi.disp.*cout,/x=/,x,\y=zzyendl.voi.main.Sample2,
3.*
11.分析以下程序的执行结.#includeiostream,h.clas.Sampl.*public.Sample.Sample int.Sample.voi.display.protected,in.x.〜}.Sample::Sample.x=
0.cout,,constructin.normally\n,z.Sample::Samplein.m.x=m.coutz,constructin.wit..number:,zxendl.*voi.Sample::display.*cout,,displa..number:,zxendl.*Sample::Sample.cout〈〈〃destructing\n〃.voi.main.•Sampl.objl.Sampl.obj
220.objl.display.obj
2.display.
12.分析以下程序的执行结.#includeiostream,h.clas.Sampl.in.n.stati.in.sum.public.Samplein.x{n=x;.voi.add{sum+=n;.voi.disp.*coutz,n=/,n,z,sum=,/sumendl..in.Sample::sum=
0./.静态数据成员赋初.voi.main.*Sampl.a2,b3,c
5.a.add.a.disp.b.add.b.disp.c.add.c.disp.
13.分析以下程序执行的结.#includeiostream,h.clas.Sampl.*in.A.stati.in.B.public.Sample in.a{A=a,B+=a;.stati.voi.funcSampl.s..voi.Sample::funcSampl.s.cout,,A=,,s.A,z,B=,,Bendl.in.Sample::B=
0.voi.main.•Sampl.si2,s
25.Sample::func si.Sample::funcs
2.*
14.分析以下程序的执行结.#includeiostream.h.clas.Sampl.*cha.cl,c
2.public.Sample cha.a{c2=cl=a-32;.voi.disp.*20a〈1〈〃转换为〃2〈61111・voi.main.•Sampl.a a,bb.a.disp.b.disp.*
15.分析以下程序执行的结.#includeiostream,h.clas.Sampl.•in.x,y.public.Sample{x=y=0;.Samplein.a,in.b{x=a;y=b;.voi.disp.•cout〃x=y=,zyendl.Sampl.si,s21,2,s310,
20.Sampl.*pa
[3]={sl,s2,s3}.forin.i=0;i3;i++.pa[i]-disp.•
16.分析以下程序的执行结.#includeiostream,h.clas.Sampl.*in.x,y.public.Sample{x=y=0;.Sample in.a,in.b{x=a,y=b;.voi.disp.•cout,,x=/,x,/,y=zzyendl..voi.main.*Sampl.si,s21,2,s310,
20.Sampl.*Pa
[3].Pa[0sl.Pa[l]=s
2.Pa
[2]=s
3.forin.i=0;i3;i++.Pa[i]-disp.
17.分析以下程序的执行结.#includeiostream,h.clas.Sampl.*public,in.x.in.y.voi.disp.cout〃x=y=,zyendl.in.Sample::*pc.Sampl.s,*p=s.pc=Sample::x.p-*pc=
10.pc=Sample::y.p-*pc=
20.p-disp.*
18.分析以下程序的执行结.#includeiostream,h.clas.Sampl.in.x.in.y.public.Sample in.a,in.b.•x二a;y=b.•in.getx{retur.x;.in.gety{retur.y;..voi.main.in.Sample::*fp.fp=Sample::getx.Sampl.s2,
7.in.v=s・*fp.fp=Sample::gety.in.t=s.*fp.cout,,v=,,v,\t=,,tendl.*
1..分析以下程序的执行结.#includeiostream,h.clas.Sampl.in.x.in.y.public.Samplein.a,in.b.x二a;y二b.in.getx{retur.x;.in.gety{retur.y;.}.voi.main.in.Sample::*fp.fp=Sample::getx.Sampl.s2,7,*p=s.in.v=p-*fp.fp=Sample::gety.in.t=p-*fp.cout,,v=/,v,/,t=z/tendl.
六、按题目要求编程下面是一个类的测试程序,设计出能使用如下测试程序的类1void mainTesta;a.init68,55;a.print;其执行结果为测试结果:68-55=13设计一个类,实现银行某账号的资金往来账目管理,包括建账号、存入、取出等解2Bank类包括私有数据成员当前账指针,日期,金额,余额和累计余Bank topdate moneyrest sum额另有一个构造函数和三个成员函数处理存入账,处理取出账和输bankin bankoutdisp出明细账,设计一个立方体类它能计算并输出立方体的体积和表面积3Box,.创建一个类,该类中有字符数组,表示姓名、街道地址、市、省和邮政编码把表4employee示构造函数、的函数的原型放在类定义中,构造函数初始化每个成changname display员,函数把完整的对象数据打印出来其中的数据成员是保护的,函数是公共的display.修改前一题的类,将姓名构成类其名和姓在该类中为保护数据成员,其构造函数为接5name,收一个指向完整姓名字符串的指针,其函数输出姓名然后将类中的姓名成display employee员字符数组换成类对象编制主函数如下namevoid mainemployeeobj“王华J中华路15号”.“武汉市湖北省”,”430070”/;obj.displayO;王国强”;obj.changenameobj.display;C.构造函数可以设置缺省参数;I.构造函数必须指定类型说明II.是析构函数的特征.A.析构函数可以有一个或多个参数;.B.析构函数名与类名不同;.C.析构函数的定义只能在类体内;D、一个类中只能定义一个析构函数
12.C++对C语言作了很多改进,下列描述中使得C语言发生了质变,从面向过程变成了面向对象A.增加了一些新的运算符;B、允许函数重载,并允许设置缺省参数;C、规定函数说明必须用原型;D、引进了类和对象的概念;
13.下列描述中,是错误的A、内联函数主要解决程序的运行效率问题;B、内联函数的定义必须出现在内联函数第一次被调用之前;C、内联函数中可以包括各种语句;D、对内联函数不可以进行异常接口声明;
14.在C++中,关于下列设置缺省参数值的描述中,是正确的A、不允许设置缺省参数值;B、在指定了缺省值的参数右边,不能出现没有指定缺省值的参数;C、只能在函数的定义性声明中指定参数的缺省值;D、设置缺省参数值时,必须全部都设置;
15.在进行完任何C++流的操作后,都可以用C++流的有关成员函数检测流的状态;其中只能用于检测输入.状态的操作函数名称是..A failB eofC badD good
16.C++语言是从早期的C语言逐渐发展演变而来的与C语言相比,它在求解问题方法上进行的最大改进是.A面向过程B面向对象C安全性D复用性
17.C++对C语言作了很多改进,即从面向过程变成为面向对象的主要原因是______...A.增加了一些新的运算符.B.允许函数重载,并允许设置缺省参...C.规定函数说明符必须用原型.D.引进了类和对象的概念
18.C++源程序文件的缺省扩展名是—.A.cpp..B.exe.C.obj.D.lik
19.在in.a=3,in.*p=a;中,*p的值是
20.类的析构函数是在调用的.・.A.类创建时B.创建对象时・・.C.删除对象时・.D.不自动调用
21.假定AB为一个类,则执行A.x;语句时将自动调用该类的________A.有参构造函数B.无参构造函数C.拷贝构造函数D.赋值构造函数
22.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为.A.A.operator+A....A..b.B.A.operator+A..aC.operator+A.a.D.A..operator+.
23.假定AB为一个类,则执行A.x;语句时将自动调用该类的・・・A.有参构造函数B.无参构造函数.・.C.拷贝构造函数D.赋值构造函数
25.假定AB为一个类.则该类的拷贝构造函数的声明语句为.A.AB A.x;.B..AB A.x.C.AB AB;.D.AB A..x.
26.下列哪项不是面向对象程序设计的主要特征?.・丸封・.
13.继・.C.多..D结构
27.对象之间的相互作用和通信是通过消息下列哪项不是消息的组成部分?A接受消息的对象B要执行的函数的名字.编写一个程序,输入个学生数据,包括学号、姓名、成绩,要求输出这些学生数据并计算6N平均分.编写一个程序,已有若干个学生数据,这些数据包括学号、姓名、语文成绩、数学成绩和英7语成绩,求各门功课的平均分要求设计不同的成员函数求各门课程的平均分,并使用成员函数指针调用它们C.要执行的函数的内部结构D函数需要的参数
28.关于C++与C语言关系的描述中,.是错误的A.C语言是C++语言的一个子集B.C语言与C++语言是兼容的C.C++语言对C语言进行了一些改进D.C++语言和C语言都是面向对象的
29.已知类A中一个成员函数说明如下voi.Set Aa.其中,A的含义是..A.指向类A的指针为..B将a的地址值赋给变量Se.C.a是类A对象的引用,用来作函数Set的参数D.变量A与a按位与作为函数Set的参数
30.已知print.函数是一个类的常成员函数,它无返回值,下列表示中,.是正确的A.void printconst;B.const void print;C void const print;D.voidprintconst;
31.如果类A被说明成类B的友元,则A.类A的成员即类B的成员B.类B的成员即类A的成员C.类A的成员函数不得访问类B的成员D.类B不一定是类A的友元
32.假定AB为一个类,则执行A.x;语句时将自动调用该类的A.有参构造函数B.无参构造函数C.拷贝构造函数D.赋值构造函
33.下面的函数声明中.是.voi.BCin.a.in.b;”的重载函数.A.in.BC in.a.in.b...B.voi.BCin.a.cha.b.C.floa.BC in.a.in.b.in.c=0・・D.voi.BC in.a.in.b=
0.
34.下面的哪一个保留字不能作为函数的返回类型_______A.voi..B.in....C.ne......D.Ion.35,下列关键字中,用以说明类中公有成员的是..A friend;B private;C protected;D public
36.进行文件操作时需要包含.文件.A iostream,h;B stdlib.h;C stdio.h;D fstream,hC指向字符串常量的指针;D指向字符串的指针常量
37.能用作用户自定义标识符A friendB-var C3xyz DFloat
38.面向对象程序设计将数据...放在一起,做为一个相互依存、不可分割的整体来处理A对数据的操作B信息C数据隐藏D数据抽象
41.下列各类函数中・・・不是类的成员函数A构造函数B析构函数C友元函数D拷贝构造函数
42.有关析构函数的说法不正确的A析构函数有且只有一个B析构函数无任何函数类型C析构函数和构造函数一样可以有形参D析构函数的作用是在对象被撤销时收回先前分配的内存空间
43.通常拷贝构造函数的参数.••・A某个对象名B某个对象的成员名C某个对象的引用名D某个对象的指针名
44.已知类A中一个成员函数说明如下voi.SetAa.其中,A的含义是.A.指向类A的指针为..B将a的地址值赋给变量Se.Ca是类A对象的引用,用来作函数Set的参数D.变量A与a按位与作为函数Set的参数
45.已知print.函数是一个类的常成员函数,它无返回值,下列表示中,.是正确的Avoid printconst;B.const voidprint;C.voidconstprint;D.void printconst;
46.类的析构函数是在____调用的A.类创建时B.创建对象时C.删除对象时D.不自动调用
47.如果类A被说明成类B的友元,则A.类A的成员即类B的成员B.类B的成员即类A的成员C.类A的成员函数不得访问类B的成员D.类B不一定是类A的友元
二、填空题1在用class定义一个类时,数据成员和成员函数的默认访问权限是2含有纯虚函数的类称为3派生类的主要用途是可以定义其基类中o4当建立,程序自动调用该类的构造函数5类是用户定义的类型,具有类类型的变量称作o6当一个成员函数被调用时,该成员函数的—指向调用它的对象7拷贝函数通过使用引用来初始化创建中的对象8静态成员函数、友元函数、构造函数和析构函数中,不属于成员函数的是o9对象的三大基本特性是多态性、、封装性10当一个类对象离开它的作用域时,系统将自动调用该类的.11假定AB为一个类,则执行〃AB语句时,系统自动调用该类构造函数的次数为.12指向基类的对象的指针变量也可以指向的对象13面向对象程序中,实体的状态由表示,其行为由表示14定义函数时,应在参数个数或参数类型上有所不同15类是用户定义的类型,具有称作对象16使用指向对象的指针来标识类的成员,则必须使用的运算符是一17拷贝初始化构造函数使用来初始化创建中的对象18封装要求一个对象应具备明确的功能,并具有以便和其它对象相互作用25在删除一个动态对象时,将自动调用该动态对象所属类的函数
三、判断题1在定义一个类时,不能在类说明中对数据成员使用表达式进行初始化2如果在类声明中没有定义复制构造函数,就不能用一个对象去初始化另一个对象03类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性对4在面向对象的程序设计中,凡操作属于同一种对象的,就将这些操作放进该对象类中,形成该类的成员函数5说明函数原型时不需要指明每个函数参数的名字,只需要说明每个参数的类型和返回值类型就可以了6所有的表达式都有值7程序的编译是以文件为单位的,因此将程序分到多个文件中可以减少每次对程序修改所带来的编译工作量8类的静态数据成员需要在定义每个类的对象时进行初始化
四、程序填空1在下面程序的横线处填上适当的语句,使该程序执行结果为10・.ttinclude iostream,h”class MyClass{public:MyClassint a{x=a;}〃取x值private:int x;;int main{MyClass my10;coutmy.getnum endl;return0;}在下面程序的底画线处填上适当的字句,使该程序执行结果为260#includeclass base{int X;public:void int int init X{X=initX;}int Getnum{return X+7;}void maincout}在下面程序的底画线处填上适当的字句,完成类中成员函数的定义3#includeclass box{private:int color;int upx,upy;int lowx,lowy;public:friend int same colorline a,box b;void define_boxint xl,int yl,int x2,int y2{upx=xl;upy=yl;};class line{private:int color;int startx,starty;int len;public:friend_int same_colorline a,box b;void define_lineint x,int y{startx=x;};int same_colorline a,box b{if a.color==b.colorreturn1;return0;}在下面程序的底画线处填上适当的字句,完成程序4#includeclass A{inti{coutvoid g{coutv g\n”;};closs B:A{public:void h{cout^h\n;};void main{B dl;dl.f6;dl.h;5在下列程序的空格处填上适当的字句,使输出为0,8,5o#include#include classMagic{double x;public:Magic double d=
0.00I xfabs d{}Magic{return Magicsqrt x*x+c・x*c・x;}ostreamos,Magic c{return os};void main{Magic ma;cout6在下面程序的底画线处填上适当的字句,使该程序执行结果为10ttinclude iostream.hclass base{int X;public:〃为X置值________〃取X值;void main{base test;test.init3;couttest.GetnumO;}7在下列程序的底画线处填上适当的字句,完成类中成员函数的定义ttinclude iostream.hclass box{private:int color;int upx,upy;int lowx,lowy;public:friend int same-colorline a,box b;set-color intc{color=c;}void define-boxint xl,int yl,int x2,int y2{upx=xl;upy=yl;};class line{private:int color;int startx,starty;int len;public:friend-intsame-colorlinea,box b;set-colorint c{color=c;}void define-lineint x,int y{startx=x;;intsame-color linea,box b{ifa.color==b.colorreturn1;return0;}在下面程序的底画线处填上适当的字句,完成程序8ttinclude iostream.hclass A{public:void finti{coutiendl;}void g{cout,\n;};class{public:void h{cout,h\n;}Af;;void main{B dl;dl.f6;_________.h;}在下列程序的空格处填上适当的字句,使输出为90,7,5ottinclude iostream.httinclude math.hclass Magic{double x;public:double d=
0.00xfabsd{}Magic operator+Magic c{return Magicsqrtx*x+c.x*c.x;}friend ostreamoperatorostreamos,Magic c{return osc.x;};void maincoutma,Magic-7ma+Magic3+Magic4;}10在下面程序横线处填上适当字句,以使该程序执行结果为:
5432105.
54.
43.
32.
21.1#include iostream.htemplate classTvoid f{*____________________________9for inti=0;in/2;i++t=a[i],a[i]=a[n-l-i],a[n-l-i]=t;void main{inta
[5]={l,2,3,4,5};doubled
[6]={l.1,
2.2,
3.3,
4.4,
5.5};f a,5;f d,6;for inti=0;i5;i++cout a[i];cout endl;for i=0;i6;i++coutd[i];coutendl;
五、程序阅读题
1.分析以下程序执行的结果#includeiostream.h#includestdlib.hclass Samplepublic:int x,y;Sample{x=y=0;}Sampleint a,int b{x=a;y=b;}void dispcout〈〈〃x=〃〈x〃,y=,/yendl;;void main|Sample si2,3;si.disp;
2.分析以下程序的执行结果#includeiostream.hclass Sample{int x,y;public:Sample{x=y=0;}Sampleint a,int b{x=a;y=b;}Sampleif x==y cout,,x=y/,endl;elsecout,,x!=y,,endl;void disp{cout,,x=,,x,\y=,,yendl;;void mainSamplesi2,3;si.disp;
3.分析以下程序的输出结果#includeiostream.hclass Sampleintx;public:Sampleint ax二a;。
个人认证
优秀文档
获得点赞 0