C++复习题及答案(共13页)_第1页
C++复习题及答案(共13页)_第2页
C++复习题及答案(共13页)_第3页
C++复习题及答案(共13页)_第4页
C++复习题及答案(共13页)_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上一、选择题1、关于C+与C语言关系的描述中,(D )是错误的。A C语言是C+语言的一个子集 B C语言与C+语言是兼容的C C+语言对C语言进行了一些改进 D C+语言和C语言都是面向对象的2、下列说法中不正确的是( C)。A 对象是类的一个实例B 任何一个对象只能属于一个类C 一个类只能有一个对象D 类与对象间的关系和数据类型与变量间关系相类似3、当将一个类A或函数f( )说明为另一个类B的友元后,类A或函数f( )能够直接访问类B的( D )。 A 只能是公有成员  B 只能是保护成员 C 只能是除私有成员之外的任何成员D 任何权限的成员4、

2、(B )是析构函数的特征。 A 析构函数在对象创建时调用 B 一个类中只能定义一个析构函数 C 析构函数的定义只能在类体内 D 析构函数可以有一个或多个参数5、要声明一个有10个int型元素的数组,正确的语句是(A )A int a10B int a2,5C int aD int *a106、如果变量x,y已经正确定义,下列语句哪一项不能正确将x,y的值进行交换( D)。A x=x+y,y=x-y,x=x-yB t=x,x=y;y=tC t=y,y=x,x=tD x=t,t=y,y=x7、假定AA为一个类,a为该类私有的数据成员,GetValue()为该类公有函数成员,它返回a的值,x为该类的

3、一个对象,则访问x对象中数据成员a的格式为( D)。A x.aB x.a()C x->GetValue()D x.GetValue()8、在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用( A)。A 内联函数B 重载函数C 递归调用D 嵌套调用9、设int *p,i; 以下正确的语句是( C)A *p=&10 B i=pC i=*p D p=2*p+110、静态数据成员的初始化必须在(B )。A 类内B 类外C 在构造函数内D 静态成员函数内11、当一个函数无返回值时,定义它的函数类型应是(A )。A voidB intC 任意D 无12、在下列关键

4、字中,用于说明类中公有成员的是(A)。A publicB privateC protectedD friend13、C+程序的执行总是从哪里开始的(B )。A 第一行B main( )函数C 头文件D 注释14、(D)不是构造函数的特征。A 构造函数的函数名与类名相同B 构造函数可以重载C 构造函数可以设置缺省参数D 构造函数必须指定类型说明15、面向对象方法的多态性是指(C )。 A 一个类可以派生出多个特殊类B 一个对象在不同的运行环境中可以有不同的变体C 针对同一消息,不同的对象可以以适合自身的方式加以响应D 一个对象可以是由多个其他对象组合而成的16、按照标识符定义的要求,(C )符号

5、不能组成标识符。A 大小写字母B 下划线C 连接符D 数字字符17、若类X是类Y的友元类,则下列哪种访问关系是正确的(B )。 A 类X的成员不能访问类Y的私有成员B 类X的成员可以访问类Y的私有成员C 类Y的成员可以访问类X的私有成员D 只有类Y的公共成员才能访问类X的私有成员18、如果编程者没有显式定义构造函数(包括复制构造函数),C+编译器就( D)。A 出现编译错误B 没有构造函数C 必须显示定义D 隐式定义缺省的构造函数19、关于成员函数特征的下述描述中,哪个是错误的( A)。A 成员函数一定是内联函数B 成员函数可以重载C 成员函数可以设置参数的缺省值D 成员函数可以是静态的20、

6、静态成员函数仅能访问(A )。A 静态的数据成员B 非静态的数据成员C 非静态的成员函数D 以上都不对21、以下不正确的C+标识符是(D )。A ABCB abcC a_bcD ab.c22、抽象类是(A )。 A 不可以定义对象B 可以定义对象C 不可以派生新类D 不可以输出23、在c+中,一个虚函数是通过下列哪个关键字放在其基类说明的前面来加以说明的(A )。A virtualB protectedC operatorD this24、在定义int a54;之后,对a的引用正确的是( C)。A a24B a50C a00D a0,025、在一个类的定义中,包含对什么成员的定义(C )。 A

7、 数据B 函数C 数据和函数D 数据或函数26、在计算机上可以直接运行的程序是(D ) 。A C+源程序B 高级语言程序C 汇编语言程序D 机器语言程序27、下面描述中,表达错误的是( B )。   A公有继承时基类中的public成员在派生类中仍是public的   B公有继承时基类中的private成员在派生类中仍是private的   C公有继承时基类中的protected成员在派生类中仍是protected的 D私有继承时基类中的public成员在派生类中是private的28、在一个函数中,要求通过函数来实现一种不太复杂的功

8、能,并且要求加快执行速度,选用(A )。A 内联函数B 重载函数C 递归调用D 嵌套调用29、下列对派生类的描述中,错误的是(D )。A一个派生类可以作另一个派生类的基类B派生类至少有一个基类C派生类的成员除了它自己的成员外,还包含了它的基类的成员D派生类中继承的基类成员的访问权限到派生类保持不变30、建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为(D )。 A 基类、自己所属类、对象成员所属类B 自己所属类、对象成员所属类、基类C 对象成员所属类、基类、自己所属类D 基类、对象成员所属类、自己所属类二、填空题1、在C+中,有一种不能定义对象的类,这样的类只能被继承,称之

9、为抽象类,定义该类至少具有一个纯虚函数。2、在C+中,用数组、指针和引用作为函数参数,能够将参数值带回。3、如果类A继承了类B,则类A称为派生类(或子类),类B称为基类(或父类)。4、面向对象程序设计有四大特征,它们是抽象、封装、继承、多态。5、C+中可以有许多相同名称,但参数类型或个数不同的成员函数,称为函数重载。6、请写出与数学表达式5/9(F-32)相对应的C+表达式5.0/9.0*(F-32)。7、构造函数是对象被创建时自动执行。一个类有可以多个构造函数,可以有一个析构函数。8、动态关联需要满足的两个条件,它们是所调用的函数是虚函数,用指针或引用调用该虚函数。9、类的成员的访问权限有p

10、ublic、protected和private三种。10、x *= y+8等价于x=x*(y+8)。11、类的静态成员分为静态数据成员和静态成员函数。12、友元可以是友元函数,也可以是友元类。13、声明类的静态成员用关键字static,声明类的友元函数用关键字friend。14、在C+中,一个派生类可以从一个基类派生称为单继承;也可以从多个基类派生,称为多重继承。无论按哪种方式继承,基类的private(私有)成员在派生类中始终是不可访问的。15、在C+中,定义重载函数时,应至少使重载函数的参数个数或参数类型不同;在基类和派生类中,成员函数的覆盖是指派生类中的函数覆盖了基类中的同名函数。16、

11、类作用域运算符“:”的作用用来指明哪个函数属于哪个类或哪个数据属于哪个类。17、面向对象方法的多态性是指针对同一消息,不同的对象可以以适合自身的方式加以响应。多态的实现分为两类编译时多态和运行时多态(或 静态多态; 动态多态)。18、类的静态数据成员是类的所有对象共享的成员。19、若需要把一个函数“void fun( )”定义为一个类A的友元函数,则应在类A的定义中加入一条语句:friend void fun()。20、请写出与数学表达式4/3R3相对应的C+表达式4.0/3*3.14*R*R*R。21、在C+中,函数参数的两种传递方式分别是 值 传递和 地址 传递。22、一个 类 和 对象

12、的关系,正如基本数据类型与该类型的变量一样,如int x;。23、在一个类中定义常数据成员用关键字const,定义静态数据成员用关键字static。24、在C+中,为对象申请空间时用new,而撤消对象时释放内存空间则用delete。25、在私有继承关系下,基类的公有成员和保护成员将成为派生类中的私有成员,它们只能由派生类的成员函数来访问;基类的私有成员对于派生类而言是不可访问。三、判断题1. 类中所提供的成员函数可以直接访问私有成员。T 2. 字符串是用单引号括起来的若干字符。F3. 构造函数和析构函数都不能重载。F4. 静态成员变量每个对象都有一份拷贝。F5. 子类可以改造从父类继承的成员。

13、T6. 说明或定义对象时,类名前不需加class关键字。T7. 运算符重载就是赋予尚未有的运算符多种运算的功能。F8. 使用关键字class定义的类中缺省的访问权限是公有的。F9. 显式类型转换可以把一个变量转换成另外一种数据类型。T10. 友元函数的声明不受访问区域的影响。T11、构造函数和析构函数都可以重载。F12、C+的源程序可以直接在计算机上运行。F13、在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。F14、类的私有成员只能被类中的成员函数访问,任何类以外的函数对它们的访问都是非法的。F15、字符串是用双引号括起来的一个或多个字符。T16、子类可以继承父类的所有成员。F

14、17、抽象类不可以继承,只能派生。F18、使用new申请的内存,在程序执行结束时,必须使用delete释放。T19、在不同的继承方式下,对于基类的私有成员,都必须通过基类的成员函数来访问。T20、多态的实现分为两类:编译时的多态和运行时的多态。T21、发生函数调用时,只能把实参的值传递给形参。F22、类A是类B的友元,则类B一定是类A的友元。F23、a*b是合法的C+标识符。F24、可以在类的构造函数中对静态数据成员进行初始化。F 25、protected和private区别在于:protected成员可以被派生类访问,而private成员则不能被派生类访问。T26、构造函数和析构函数都可以重

15、载。F27、使用关键字class定义的类中缺省访问权限是私有(private)的。T28、成员运算符描述的是对象和成员之间的关系。T29、要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用函数重载。F30、如果有以下定义,int a=10,*ptr=&a; 则变量ptr的值为10。F四、阅读程序写结果1、#include <iostream>using namespace std;inline float fmax(float x,float y)return x>y?x:y;int main( )float a=12.3,b=20.5;cout<

16、<"fmax(a,b)="<<fmax(a,b)<<endl;return 0;2、#include <iostream>using namespace std;int main()cout<<"This "<<"is "cout<<"a "<<"C+ "cout<<"program."<<endl;return 0;3、#include <iostream

17、>using namespace std;class Aprivate:int x;int y;public:A(int a,int b)x=a;y=b;void print()cout<<"x="<<x<<""<<"y="<<y<<endl;int main()A a(-5,-10);a.print();return 0;4、#include <iostream>using namespace std;int sum(int x, int y)

18、;int sum(int x, int y, int z);double sum(double x, double y);double sum(double x, double y, double z);int main()cout<<sum(12, 52)<<endl;cout<<sum(21, 5, 37)<<endl;cout<<sum(11.2, 5.0, 17.5)<<endl;return 0;int sum(int x, int y)return x+y;int sum(int x, int y, int z

19、)return x+y+z;double sum(double x, double y)return x+y;double sum(double x, double y, double z)return x+y+z;5、#include <iostream>using namespace std;class Box public: Box(int,int,int); int volume(); private: int height; int width; int length; ;Box:Box(int h,int w,int len) height=h; width=w; le

20、ngth=len; int Box:volume() return(height*width*length); int main() Box box1(12,25,30); cout<<"The volume of box1 is "<<box1.volume()<<endl; Box box2(15,30,21); cout<<"The volume of box2 is "<<box2.volume()<<endl; return 0; 6、#include <iostre

21、am>usint namespace std;class Pointprivate:int x;int y;public:Point(int a,int b)x=a;y=b;int getx()return x;int gety()return y;class Circle:public Pointprivate:int r;public:Circle(int a,int b,int c):Point(a,b)r=c;int getr()return r;float area() return 3.14159*r*r;int main()Circle c(15,20,10);cout&l

22、t;<"圆心为:("<<c.getx()<<","<<c.gety()<<")"<<endl;cout<<"半径为:"<<c.getr()<<endl;cout<<"面积为:"<<c.area()<<endl;return 0;7、#include <iostream>using namespace std;class A public: A()c

23、out<<"Constructor A"<<endl; A()cout<<"Destructor A" <<endl;class B:public A public: B()cout<<"Constructor B" <<endl; B()cout<<"Destructor B"<<endl;int main() B b; return 0;五、编写程序1、设计一个程序,用内联函数实现求出三个整数中的最小值,并输出。2、

24、定义一个求两个整数中较大值的函数max( ),要求定义成内联函数,然后在main( )函数中进行调用。3、类Person的定义如下,请实现该类,并创建对象obj,然后使用构造函数为obj赋予初始值(内容自定)。class Personprivate:string name;int age;int salary;string tel;public:Person(string xname,int xage,int xsalary,string xtel);void disp();4、实现一个类A,在A中有两个私有整型变量a和b,定义构造函数对a和b进行初始化,并实现成员函数geta()取得a的值和

25、getb()取b的值。实现类B从A继承,覆盖geta(),使其返回a的2倍。5、建立一个名为Teacher的类,该类有以下几个私有成员变量:教师姓名、工资号、性别、年龄。还有以下两个成员变量:一个用于初始化教师姓名、工资号、性别和年龄的构造函数,一个用于输出教师信息的函数。编写一个主函数,声明一个教师对象,然后调用成员函数在屏幕输出教师信息。阅读程序写结果1、fmax(a,b)=20.52、This is a C+ program.3、x=-5;y=-104、646333.75、The volume of box1 is 9000The volume of box2 is 94506、圆心为:

26、(15,20)半径为:10面积为:314.1597、Constructor AConstructor BDestructor BDestructor A编写程序1、#include <iostream>using namespace std;inline int min(int a, int b, int c)if (a>b) a=b;if (a>c) a=c;return a;int main()int a,b,c,m;cout<<"Please input a,b,c:"<<endl;cin>>a>>

27、;b>>c;m=min(a,b,c);cout<<"The minimum integer is:"<<m<<endl;return 0;2、#include <iostream>using namespace std;inline int max(float x,float y)return( x>y?x:y);int main()float m=10.5,n=20.7,t;t=max(m,n);cout<<"较大值="<<t<<endl;return

28、 0;3、#include <iostream>using namespace std;class Personprivate:string name;int age;int salary;string tel;public:Person(string xname,int xage,int xsalary,string xtel);void disp();Person:Person(string xname,int xage,int xsalary,string xtel)Name=xname;age=xage;salary=xsalary;tel=xtel;void Person:disp()cout<<endl;cout<<"姓名:"<<name<<endl;cout<&

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论