版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一、二章习题1 关于C+语言,下列说法不正确的是A C+具有简洁、高效和接近汇编语言的特点B C+本身几乎没有支持代码重用的语言结构C C+语言不是一种纯面向对象的语言D C+支持面向对象的程序设计,这是它对C的重要改进B2 使用关键字_说明的函数为内联函数。inline3 C+支持两钟多态性,即_和_。编译时的多态性运行时的多态性4 在下面横线处填上适当字句,使程序输出结果为5,10# include void main()_int n=5;int& _=n;ref=ref+5;coutn”,”ref;constref5 const int *p;表明A p本身是常量B p指向一个固定的i
2、nt类型的地址,而p的内容可以修改C p只能指向一个整型常量D p只能指向一个被const修饰的int类型的常量C6 数据封装给数据提供了与外界联系的_,只有通过这些_,使用规范的方式,才能访问数据。标准接口 接口7 在下面横线处填上适当字句,使程序完整。int arr=1,2,3,4,5;_index(int i)return ai;void main()index(3)= _;/将a3改为6int &68 #include void main()int *p,i,j;cinj;/输入4p=new intj;if(!p)cout”Allocation errorn”;for(i=0;ij;i
3、+)pi=i;for(i=0;ij;i+)coutpi“ “;coutendl;delete p;输出为:4(这是输入的数据)01239#include void comp(const int&,int&);int main()int n=6,t=10;cout”n=”n”,t=”tendl;comp(n,t);cout”n=”n”,t=”tendl;return 0;void comp(const&in1,int &in2)in2=in1*10+in2;输出为:n=6, t=10n=6,t=7010 下列属于C+头文件约定使用的扩展名的是i. .cppii. .hppiii. .civ. .
4、c+B11 C+提供了一种新的注释方式:从“/”开始,直到_,都被计算机当做注释。行尾12 在C+中,多态性被直观地称为“_”。一个名字,多个函数13 #include void addsub(int&,int&);void main()int a=10,b=15;addsub(a,b);cout”a=”a”,b=”b;void addsub(int &m,int &n)int temp=m;m=m*n;n=temp-n;输出为:a=150,b=-514 #include void main()int a22=2,4,6,8;int *pa2;pa0=a0;pa1=a1;for(i=0;i2;
5、i+)for(j=0;j2;j+,pai+)cout“a”i“ ”j“=”*paiendl;输出为:a00=2a01=4a10=6a11=815 #include #include main()coutsetfill(*)setw(2)21endlsetw(3)21endlsetw(4)21endl;输出为:21*21*2116 C+有几种联编i. 1种ii. 2种iii. 3种iv. 4种B17 由于引用不是变量,所以不能说明引用的_,也不能说明数据类型为引用数组或是指向引用的指针。引用18 函数原型标识一个函数的_,同时也标识该函数参数的_和_。返回类型个数类型19 #include vo
6、id f()static int i=15;i+;cout”i=”iendl;void main()for(int k=0;k2;k+)f();输出为:i=16i=1720 #include #include main()couthex20endl;coutoct10endl;coutsetfill(x)setw(10);cout100”aa”endl;return 0;输出为:1412xxxxxxx144aa21 #include int fun(int n1,int n2)return n1*n2;float fun(int f1,float f2)return f1*f2;void ma
7、in()int a=10;int b=2.5;float c=2.55;float d=5.52;coutfun(a,b)endl;coutfun(c,d)endl;输出为:2011.0422 与标准错误输出设备相关联(缓冲方式)的,由C+流库预定义的流是_。clog23 C+的流类库预定义的,与标准输出设备相关联的流是i. cinii. coutiii. cerriv. clogB第三章习题及答案9 缺省的析构函数的函数体是A 不存在的B 随机产生的C 空的D 无法确定的C10 以下说法中正确的是A 一个类只能定义一个构造函数,但可以定义多个析构函数B 一个类只能定义一个析构函数,但可以定义
8、多个构造函数C 构造函数与析构函数同名,只是名字前加了一个波浪号()D 构造函数可以指定返回类型;而析构函数不能指定任何返回类型,即使是void类型也不可以B11 不能在C+中提供封装的关键字是A classB structC typeD unionC12 由于数据隐藏的需要,静态数据成员通常被说明为A 私有的B 保护的C 公有的D 不可访问的A13 在类中说明的任何成员都不能用_、_和_关键字进行修饰。extern autoregist14 构造函数是和_同名的函数,但要在后者的名字之前冠有一个_,以区别于前者。析构函数波浪号 15 用关键字static修饰的成员称为_。静态成员16 已知A
9、A是一个类,则AA *a2;声明了一个_数组。类对象指针17 拷贝初始化构造函数用对它所在类的_作为参数。引用18 指出下面程序段中的错误,并说明出错原因。/str1.h#include #include class strprivate:char *string;public:str(char* s)string=new charstrlen(s)+1;strcpy(string,s);str()cout”Delete”endl;delete string;void print()coutstringendl;#include “str1.h”void main()str s1=”stude
10、nt”;str s2=s1;s1.print();s2.print();指针悬挂问题24 指出下面程序段中的错误,并说明出错原因。class Locationpublic:void init(int initX,int initY);private:int X=1;public:int getX();private:int y;不能采用这种方式初始化25 指出下面程序段中的错误,并说明出错原因。class Testprivate: int num;protected: int p;void fun()Test m;int x=m.p;类之外定义的函数不能访问类的保护成员26 指出下面程序段中的
11、错误,并改正。class testint x;test *ptr=new test2;delete ptr;应为:delete ptr;27 在下面横线处填上适当字句,完成类的定义。class Tpublic: void init(int initx)x=initx;int getx()_;/取x值private: _;return xint x28 在下面横线处填上适当字句,完成类中成员函数的定义。class ABCint n;float f;public: ABC(int,float);ABC(ABC&);ABC:ABC(_)n=num;f=f1;ABC:ABC(ABC&t)n=_;f=t
12、.f;int num,float f1t.n29 #include class Apublic: static int x;int y;int A:x=15;void main()A a;coutA:xendl;couta.xendl;输出为:151530 class testprivate: int num;public: test();int get()return num;test();test:test()num=0;test:test()cout”Destructor is active”endl;void main()test t2;cout”Exiting main”endl;输
13、出为:Exiting mainDestructor is activeDestructor is active31 #include class salaryint x,y;static int n;public: salary(int b):x(b)void f(double i)y=x*i;static void g(int p)n=p;int h()constreturn(x+y+n);int salary:n=100;void main()salary s1(1000),s2(2000);s1.f(0.2);s2.f(0.15);salary:g(400);cout”s1=”s1.h(
14、)”,s2=”s2.h()”n”输出为:S1=1600,S2=270032 #include class tint x;float y;public: t(int n)x=n;t(int n,float f)x=n;y=f;int f()return x;float g()return y;t one2=3,4;t two2=t(3,5.5),t(7,8.8);void main()for(int i=0;i2;i+)cout“one”i“=”onei.f()endl;coutendl;for(int i=0;i2;i+)cout“two”i“=(”twoi.f()”,”twoi.g()”)”
15、endl;输出为:one0=3one1=4two0=(3,5.5)two1=(7,8.8)33 说明友元函数使用关键字i. friendii. staticiii. constiv. volatileA34 指向类X中类型为type的数据成员的指针的说明形式为i. type X:*pointerii. X:type *pointeriii. Type *X:pointeriv. X:*type pointerA35 有关类作用域,下列说法中不正确的是i. 说明类时使用的一对花括号形成所谓的类作用域ii. 类作用域不包含类中成员函数的作用域iii. 类作用域中说明的标识符只在类中可见iv. 在可
16、能出现两义性的情况下,必须使用作用域限定符“:”B36 形如X:X(X&)的构造函数称为i. 拷贝函数ii. 复制函数iii. 初始化构造函数iv. 拷贝初始化构造函数D37 友元关系不具有_,即当说明类A是类B的友元时,类B不一定是类A的友元。交换性38 new和_一同起作用,delete与_一起工作。构造函数析构函数39 指出下列程序段中的错误,并改正。class Bbprivate:int n;float f;public:Bb(int n1,float f1)n=n1;f=f1;Bb(Bb b)n=b.n;f=b.f;应为:Bb(Bb &b)n=b.n;f=b.f;40 指出下面程序段
17、中的错误,并改正。class testpublic: static int x;int test.x=10;应为:int test:x=10;41 在下面横线处填上适当字句,完成类中成员函数的定义。class Aprivate: int x;float y;public: A (int aa,float b)x=_;/用aa初始化xy=_;/用b初始化y;aab42 #include class Aprivate: int a,b;public: A(int m,int n)a=m;b=n;void fun()couta”,”bendl;void fun()constcouta”:”b*p()
18、;应为:(px-*p)();52 在下面横线处填上适当字句,使其输出结果为25,10。#include class Locationint X,Y;public: _;int GetX()return X;int GetY()return Y;void Location:init(int k,int t)(X=k;Y=t;)void main()Location a;a.init(25,10);_;/输出对象a的数据成员X和Y的值。void init(int k, int t)couta.GetX()”,”a.GetY()53 在下面横线处填上适当字句,使程序输出结果为:x=10,y=5x=5
19、,y=10Delete x=5,y=10Delete x=10,y=5#include class ttprivate: int x,y;public: tt(int a, int b)x=a; y=b;_;tt() _;void main()tt arr2=tt(10,5),tt(5,10);cout”x=”x”,y=yendlcout”Delete x=”x”,y=”yendl54 #include class ConstFunpublic: const int f5()return 5;int obj()return 3;void main()ConstFun a;const int i
20、=a.f5();int x=obj();couti” “xendl;const ConstFun b;int j=b.f5();coutjendl;输出为:53555 运行下面的程序,写出当输入15,12时的结果#include class Rectangeint width,length;public: Rectange(int x,int y)length=x;width=y;void show()cout”The length is:”lengthendl;cout”The width is:”widthendl;coutThe area is:”width *lengthendl;vo
21、id main()int m,n;cout“Input the length and the width!”m;/输入15cinn;/输入12Rectangle r(m,n); r.show();输出为:Input the length and width15 12(这是输入数据)The length is:15The width is:12The area is:18056 #include class myclassint val;public: myclass(int i=0)val=I;myclass(myclass& cp);void set(int i);void print();
22、myclass();myclass:myclass(myclass& cp)val=cp.val;cout”Hi.val=”valendl;void myclass:set(int i)val=I;void myclass:print()cout”This Print val=”valendl;myclass:myclass()cout”Destructor for val=”valendl;myclass myfun(myclass obj)obj.print();obj.set(10);return obj;void gFun()myclass my(5),ret;ret=myfun(my
23、);void main()gFun();cout”Exiting main”endl;输出为:Hi.val=5This print val=5Hi.val=10Destructor for val=10Destructor for val=10Destructor for val=10Destructor for val=5Exiting main57 类的静态成员i. 是指静态数据成员ii. 是指静态成员函数iii. 为该类的所有对象共享iv. 遵循类的其它成员所遵循的所有访问限制C58 一个类最多可有几个虚析构函数i. 不定ii. 4iii. 3iv. 1D59 下列说法中正确的是i. 运
24、算符new用于建立生存期可控的对象ii. new建立动态对象的语法完全不同于建立动态变量的情况iii. 使用new建立的动态对象不用时必须调用析构函数删除iv. new和构造函数不能同时使用A60 允许访问该类的所有对象的私有成员、公有成员和保护成员的是i. 友元函数ii. 成员函数iii. 内联函数iv. 重载函数A61 如果没有使用关键字,则所有成员A 都是public权限B 都是protected权限C 都是private权限D 权限情况不确定C62 联合以关键字_定义,成员缺省为_,并且在某个给定时间,只出现_个成员。Union公有一63 不带参数的构造函数又称为_。缺省构造函数64
25、建立指向类A的无参数、无返回值的成员函数的指针p的语句是_。void(A:*p)(void);65 在类定义中,在关键字protected之后说明的成员称_。保护成员66 在_部分定义的内容允许被其它对象无限制地存取。public67 指出下列程序段中的错误,并说明出错的原因。class testprivate: int num;public: test();test(int n);test:test()num=0;test:test(int n)num=n;void main()test x;test y(2,3);test arr2=2,3;没有定义两个参数的构造函数68 指出下面程序段中
26、的错误,并改正。class Mprivate: int a;static int x;public: void f();static void sf(M&m);void M:f()x=15;void M:sf(M&m)a=10;应为:m.a=10;69 #include class Mpublic: M(int i)X=i;coutXendl;M(M &m)X=m.X;coutXendl;void setX(int a)X=a;M()coutXendl;private: int X;void main()M m1(2),m2(m1);m2.setX(3);M m3=m2;输出为:2233325
27、7已知example是已定义的类,则在程序结束前,共存在几个对象#include “example,h”main()example x(5);example arr2=1,2;x=10;x.print();x=example(15);x.print();E. 3个 F. 5个 G. 7个 H. 8个B第四章习题及答案19 关于下面程序段,说法正确的是class Locationpublic: int GetX();class Rectangle: private Locationpublic: int GetW();I. 类Rectangle私有派生类LocationJ. 类Rectangle
28、中的public成员在类Location中是私有的K. 类Location中的public成员在类Rectangle中是不可访问的L. void f()Rectangle r;int X=r.GetX();其中X=r.GetX();是非法语句D20 对于多重继承,有A 一个派生类只能有一个基类B 一个基类只能产生一个派生类C 一个基类必须产生多个派生类D 一个派生类可有多个基类D21 派生类的对象与基类的对象的关系是A 属于前者则不属于后者B 属于前者,不一定属于后者C 不属于前者则一定不属于后者D 属于前者则一定属于后者D22 对于以下程序段,表达式正确的是class basepublic:
29、 int b;class base1:public base;class base2:public base;class derived: public base1,public base2public: int fun();derived d;M. d.base1:b N. d.base:b O. d.b P. d.base:fun()A23 对于以下的程序段,没有二义性的表达式是class Apublic: int f( );class Bpublic: int g( ); int f( );class C:public A, public Bpublic: int g(); int h(
30、);C obj;A obj.f( )B obj.A:g()C obj.B:f()D obj.b:h()C24 构造函数(包括析构函数)是_继承的,所以,一个派生类只能调用它的_基类的构造函数。不能直接25 指出下面程序段中的错误,并说明出错原因。class Apublic: void fun();class Bprivate: void fun();class C: public A , private B ;C x;x.fun();两义性检查是在访问权限检查之前进行的,故成员的访问权限不能解决两义性问题26 在下面横线处填上适当字句,使程序完整。class baseint a;public:
31、 base(int i)a=I;class derived: public base int d;public: derived(int I,int j);_(int I, int j): base(i)d=j;void main()derived d(_);/将基类成员初始化为3,派生类成员初始化为5derived:derived3,527 单一继承形成一个_的树,多重继承形成一个_图。倒挂有向无环28 在下面横线处填上适当字句,使程序完整。#include class Aprotected: int x,y;public: void setx(int a)x=a;void sety(int
32、 b)y=b;class B:public Aprivate: _;public: void seth(int c)h=c;void setw(int d)w=d;void show()coutx”,”y”,”h”,”wsetx(3);p-sety(4);p-seth(5);p-setw(6);p-show();int h,wb* p=&r29 指出下面程序段中的错误,并改正。class base;class base1:public base;class base2:public base;class derived:public base1,public base2;base *bptr;
33、derived *dptr;dptr=(derived *)bptr;可改为:dptr=(derived *)(base1 *)bptr;或dptr=(derived *)(base2 *)bptr;30 在下面横线处填上适当字句,使程序完整。#include class Apublic: void f()cout”a.f”endl;class Bpublic: void g()cout”b.g”endl;void f()cout”b.f”endl;class C:_/类C从类A和类B公有派生void g()cout”c.g”endl;void main()C x;_;/对象x访问类B的g()
34、x.A:f();public A, public Bx.B:g()31 下面程序用于计算各类形状的总面积。在下面横线处填上适当字句,完成程序功能。#include class shapepublic: virtual float area=0;float total (_,int n)float sum=0;for(int i=0;iarea();return sum;class triangle:public shapeprotected: float H,W;public: triangle(float h,float w)H=h;W=w;float area()return H*W*0.
35、5;class rectangle:public trianglepublic: rectangle(float h,float w):triangle(h,w)float area()return H*W;void main()shape *s2;s0=new triangle(1.0,2.0);s1=new rectangle(2.0,4.0);float sum=total(s, _);shape *s232 在可能出现两义性的情况下,必须使用_。作用域限定符(:)33 赋值兼容原则是指在_派生的情况下,一个_的对象可以作为_的对象来使用。公有派生类基类34 C+派生类从父类中继承性质时
36、的变化可归结为两类,即_和_。性质约束性质扩展35 指出下面程序段中的错误,并改正。class AAprivate: int a;public: AA(int i)a=i;class BB: public AAprivate: int b;public: BB(int i,int j);BB:BB(int i,int j):AA(j)b=i;Void main()BB b(3,6):AA(6);应为:BB b(3,6);第五章习题及答案36 编译时的多态性使用什么获得A 重载函数B 继承C 虚函数D B和CA37 抽象类A 至少含有一个纯虚函数B 至少含有一个空虚函数C 派生的类必须提供纯虚函
37、数的实现代码D 可以说明抽象类的对象,也可以派生新类A38 一般来讲,对于二元运算符,为便于使用,应将它重载为A 成员函数B 虚函数C 构造函数D 友元函数D39 对于表达式1+2,C+编译器在处理它时,将其解释成函数调用表达式A operator(1+2)B operator+(1,2)C +(1,2)D operator1+2B40 下列程序段中,错误的是class Apublic: virtual void f()=0;/void g()f();/A()f();/;A B C D 和C41 运算符A 只能用类运算符重载B 只能用友元运算符重载C 可以用类运算符或友元运算符重载D 不能重载
38、A42 许多情况下,在基类中不能为虚函数给出一个有意义的定义,这时可以将它说明为_。纯虚函数43 指出下面程序段中的错误,并改正。class numberprivate: int num;public: number(int i)num=i;int +operator();int number:+operator()num+;return num;int operator+();int number:operator+();44 指出下面程序段中的错误,并说明出错原因。class A public: virtual void show()=0;A a; A *p;不能说明抽象类的对象45 下面
39、是实现重载+运算符的类number的定义。在下面横线处填上适当字句。class numberprivate: int num;public: number(int i)num=i;int operator+()/前缀:+n num+; return_;int operator+(int)/后缀:n+int i=num; num+; return _;numi46 #include class A;public: virtual void f1()cout”f1()f2()”endl; f2();void f2()cout”f2()f3()”endl; f3();virtual void f3(
40、)cout”f3()f4()”endl; f4();virtual void f4()cout”f4()f5()”endl; f5();void f5()cout”The end”endl;class B:public Apublic: void f3()cout”(f3-f4)”endl; f4();void f4()cout”(f4f5)”endl; f5();void f5()cout”All done”f1();delete ptr;输出为:f1()f2()f2()f3()(f3f4)(f4f5)All done47 operator经常和C+中的一个_联用,表示一个_名。运算符运算符
41、函数48 下面是类complex(复数)的定义,其中重载的运算符以复数形式输出结果,如将实部为3虚部为2的复数输出为3+2i。在横线处填上适当字句。class complexprivate: float Re,Im;/Re是实部,Im是虚部public: complex(float r=0,float i=0)Re=r;Im=i;friend ostream& operator(ostream &s,complex e)_;return _;sc.Re”+”c.Im”i”s49 静态联编的最大优点是_。速度快50 要获得多态性的对象,必须建立一个_,然后在派生类中重定义基类函数。类等级51 #
42、include class Apublic: virtual operator const *()return “ABC”;class B:public Apublic: operator const *()return”DEF”;void main()A *p=new A;A *t=new B;cout*p*tendl;输出为:ABCDEF52 #include class baseint i;public:base(int a=0):i(a)virtual int sum(void)constreturn i;class derived:public baseint j;public: derived(int a=0,b=0):base(a),j(b)int sum(void)constreturn base:sum()+j;void call(bse B)cout”sum=”B.sum()endl;void main()base b(10);derived d(10,40);call(b);call(d);输出为:sun=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电站高压试验操作工规程
- 2025-2026学年湖南省怀化市初中生物七年级期末下册高分预测素养提升题(附答案)
- PCN制程变更通知专项考试题(含详细答案)
- 事故善后及家属安抚工作方案
- 内蒙古鄂尔多斯市达拉特旗第十二中学2027届数学八年级第一学期期末统考模拟试题含解析
- 2025-2026学年湖北省恩施市初中历史八年级期末上册自测黑金考题(附答案)
- OT运维技术考核试题(含详细答案)
- OpenStack 高频面试题及详细答案(实战版)
- 危化油墨清洗剂管理员规程
- 空分装置加温解冻操作工规程
- 大数据技术毕业论文
- 脑梗死2025诊疗指南
- 中免集团面试题目及答案
- 【人教pep版】六年级英语阅读理解50题篇训练题(含答案解析)
- 化工液氨充装质量保证手册
- 教育部《2025年“校园餐”专项整治》专题培训
- 上课课件-《食品物流学》(和东芹)
- 《椭圆的几何性质》第1课时名师课件
- JBT 6434-2024 输油齿轮泵(正式版)
- 金工实训-车工
- 万历十五年读书报告
评论
0/150
提交评论