C++复习题.doc_第1页
C++复习题.doc_第2页
C++复习题.doc_第3页
C++复习题.doc_第4页
C++复习题.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

一、选择题1、虚函数必须是类的 A 。A 成员函数B 友元函数C 静态函数D 析构函数2、下列关于虚函数的表述中正确的是 B 。A 只有用virtual修饰的成员函数才是虚函数。B 派生类中覆盖虚的重定义函数仍然是虚函数。C 对虚函数的调用都是动态绑定的。D 使用虚函数主要是为了提高运行效率。3、下列关于抽象类的表述中正确的是 C 。A 没有函数成员的类称为抽象类。B 含有虚函数成员的类称为抽象类。C 含有纯虚函数成员的类称为抽象类。D 用abstract修饰的类称为抽象类。4、若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是哪一种 D 。A externB registerC autoD static5、关于静态数据成员的特性,下列哪一个说法是错误的 A 。A 静态数据成员不是所有对象所共有的。B 静态数据成员在类体外进行初始化。C 声明静态数据成员时要在变量名前加关键字static来修饰。D 引用静态数据成员时,要在静态数据成员名前加类名和作用域运算符。6、下列关于常成员的说法不正确的是哪一个 B 。A 常数据成员必须进行初始化,并且不能被更新。B 常数据成员可以在定义时直接初始化。C 常成员函数可以被非常对象调用。D 常数据成员通过构造函数的成员初始化列表进行初始化。7、对于const关键字修饰对象的说法,下列哪一个说法是正确的 C 。A 不能用一般的成员函数来访问B 可以用一般的成员函数来访问C 可以访问const成员函数D 不能访问const成员函数8、在任何继承方式下,派生类的自有成员函数都能够访问原基类的某些成员,这些成员的原访问属性必然是 A 。A 公有或保护B 私有或继承的私有C 保护或私有继承的私有或公有9、基类中的某些成员在派生类中的访问属性与派生方式无关,这些成员必然是原基类中的 B 。A 公有成员B 私有成员 C 保护成员 D 继承的私有成员10、以下关于预处理的说法,错误的是 B 。A 预处理在编译前进行B 预处理指令需要分号结尾C 每条预处理指令必须单独占用一行D 预处理指令可以出现在程序的任何位置11、假设名字空间A中有函数void f(),且名字空间A被嵌套在名字空间B中,则以下哪一项实现了对函数f()的访问 D 。A A.B.f();B B.A.f();C A:B:f();D B:A:f();12、以下哪一项不在标准C+库中 A 。A 微软基础类(MFC)B 容器类与抽象容器类(ADT)C 存储管理类D 错误管理13、关于运算符重载,下列表述正确的是 C 。A 可以针对基本类型的数据,重新定义“*”的含义B 通过运算符重载可以改变运算符的操作数个数C 只能重载C+中已有的运算符D C+中所有的运算符都可以重载14、在下列运算符中,只能作为二元运算符重载的是 D 。A +B -C *D /15、在int b3=1,2,3,4,5,6,2中,b22的值是 C 。A 0B 3C 6D 216、下面关于指针的运算中,非法的是 D 。A 两个指针在指定的条件下,可以进行相等的或者不等的运算。B 可以将一个空指针赋值给某指针。C 一个指针可以加上两个整数之差。D 两个指针在一定条件下可以相加。17、语句int *p=&k;定义了指针p,与这个语句等效的语句序列是 A 。A int *p; p=&k;B int *p; p=k;C int *p; *p=&k;D int *p; *p=k;18、要定义一个具有5个元素的一维数组vect,并使其各元素的初值依次是30,50,-88,0和0,则下列定义语句中错误的是 A 。A int vect=30,50,-88;B int vect=30,50,-88,0,0;C int vect5=30,50,-88;D int vect5=30,50,-88,0,0;19、下列十六进制整型常量的写法中,错误的是 B 。A 0xafB 0C 0X1bD 0xAE20、判断字符型变量ch是否为小写字母,应该使用表达式 D 。A ch=a & ch=zB ch=zC a=ch=a & ch=z21、在C+中,实现封装性需借助于 B 。A 枚举B 类C 数组D 函数22、下列字符串中,正确的C+标识符是 D 。A foo-1B 2bC newD _25623、下列符号中可以用作C+标识符的是 A 。A _radiusB foobarC elseD 3room24、以下不是C+关键字的是 D 。A newB charC tryD get25、设有如下类的定义: class Sample int s; public: void setdata(int m); ;如果在类体外定义成员函数setdata( ),则以下形式定义正确的是( B )。Avoid Sample:setdata( )Bvoid Sample:setdata(int m)Cvoid setdata(int m).DSample:void setdata(int m)26、在C+中,实现封装性需借助于( B )。A 枚举B 类C 数组D 函数27、C+程序的执行总是从哪里开始的(B )。A 第一行B main( )函数C 头文件D 注释28、关于C+与C语言关系的描述中,(D )是错误的。A C语言是C+语言的一个子集 B C语言与C+语言是兼容的C C+语言对C语言进行了一些改进 D C+语言和C语言都是面向对象的29、下列数组声明中,错误的是( C )。A int a=1,2,3,4 B float a3=0,0,0C int a2=4,6.3 D float a3=0,2.3 二、填空题1、含有纯虚函数的类称为 。抽象类2、已知一个类有一成员函数,其原型是:Name execute(int, const char*) const; 现准备将之改为纯虚函数,其原型应改为 。Name execute(int, const char*) const0;3、实现编译时的多态性的机制称为 ,实现运行时的多态性的机制称为 。静态绑定(或静态联编);动态绑定(或动态联编)4、在C+中,编译时的多态性是通过 和模板体现的,运行时的多态性是通过 体现的。函数重载;虚函数5、在用class定义派生类时,默认的继承方式是 。私有继承6、如果类Alpha继承了类Beta,则类Alpha称为 类,类Beta称为 类。派生(或子);基(或父)7、有如下程序段:int a;int &b=a;a=3;b=a+1;则a= ,b= 。4;48、执行语句序列:int i=0; while(i20) i+=3;coutb?a:b的值是 。311、C+语言的多态性依赖于 和 的概念。虚函数;抽象类 12、类的成员的访问权限有 、 和 三种。公有(public);私有(private);受保护(protected)13、构造函数是 被创建时自动执行,对象消失时自动执行的成员函数称为 。对象;析构函数14、C+源程序文件的扩展名为 ,C+头文件的扩展名为 。cpp;h15、在C+中,用数组、指针和 作为函数参数,能够将参数值带回。引用16、在C+类中,有一种不能定义对象的类,这样的类只能被继承,称之为 ,定义该类至少具有一个 。抽象类;纯虚函数17、在C+中,一个派生类可以从一个基类派生称为 ;也可以从多个基类派生,称为 。无论按哪种方式继承,基类的 成员在派生类中始终是不可访问的。单继承;多重继承;私有18、在C+中,为对象申请空间时用 ,而撤消对象时释放内存空间则用 。new;delete19、运算符重载函数的关键字是 ,它和运算符一起组成该运算符函数的函数名。operator20、面向对象程序设计的四个基本特征是: 、 、 和 。抽象;封装;继承;多态21、声明类用关键字 ,声明类的静态成员用关键字 ,声明类的友元函数用关键字 。class;static;friend22、在C+语言中,访问一个对象的成员所用的运算符是 ,访问一个指针所指向的对象的成员所用的运算符是 。. -23、请写出与数学表达式5/9(F-32)相对应的C+表达式 。5.0/9*(F-32)三、判断题(F)1、C+的源程序可以直接在计算机上运行。(T)2、类中所提供的成员函数可以直接访问私有成员。 (F)3、字符串是用单引号括起来的若干字符。(T)4、在任何继承方式下,派生类的自有成员函数都不能够访问原基类的某些成员,这些成员的原访问属性必然是私有或继承的私有。(F)5、静态成员变量每个对象都有一份拷贝。(F)6、静态变量和外部变量一样,可以为多个源文件所共享。(T)7、运算符重载实质上是函数的重载。(T)8、说明或定义对象时,类名前不需加class关键字。(F)9、对于用const关键字修饰的对象,可以访问一般的成员函数。(T)10、公有继承时,基类的受保护成员可以被派生类的成员函数访问。(F)11、抽象类不能定义对象,也不能定义指向抽象类数据的指针变量。(F)12、重载一个二元运算符为成员函数时,函数的参数个数必须为两个。(F)13、ab*c是一个合法的C+标识符。(T)14、类的重用就是利用已有的类来构建新的类。(T)15、外部变量可以用extern在多处声明,但是对变量的定义和初始化只能是唯一的。(T)16、说明或定义对象时,类名前不需加class关键字。(F)17、在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。(F)18、发生函数调用时,只能把实参的值传递给形参。(T)19、类的构造函数的作用就是在对象被创建时利用特定的值初始化对象。(T)20、在派生类中可以重新定义从基类继承下来的虚函数,也可以不重新定义,此时,继承下来的虚函数仍然保持其在基类中的定义。(F)21、类A是类B的友元,则类B一定是类A的友元。(T)22、子类可以改造从父类继承的成员。(F)23、运算符重载就是赋予尚未有的运算符多种运算的功能。(F)24、有时需要使几个不同类型的变量共用同一组内在单元,这时可以定义一个结构体类型。(F)25、类的私有成员只能被类中的成员函数访问,任何类以外的函数对它们的访问都是非法的。(T)26、字符串是用双引号括起来的一个或多个字符。(F)27、抽象类不可以继承,只能派生。(T)28、使用new申请的内存,在程序执行结束时,必须使用delete释放。(T)29、在不同的继承方式下,对于基类的私有成员,都必须通过基类的成员函数来访问。(T)30、多态的实现分为两类:编译时的多态和运行时的多态。四、分析程序,写出程序运行结果。1.#includeclass Base public:virtual void fn() cout In Base Class endl;class SubClass :public Base public: virtual void fn() cout In Sub Classfn();p=≻ p-fn();结果:In Base ClassIn Sub Class2.#include class ONE public: virtual void f()coutlendl;class TWO:public ONE public: TWO()cout2endl;class THREE:public TWO public: virtual void f()TWO:f(); coutf();结果:22133.#include class A int a;public :A(int aa=0) a=aa; A() cout “Destructor A!”aendl; ;class B: public A int b;public: B(int aa=0, int bb=0) : A(aa) b=bb; B() cout“Destructor B!”bendl; ;void main() B x(5),y(6,7);结果:Destructor B! 7Destructor A! 6Destructor B! 0Destructor A! 54.#include class A public: A()coutA:Constructorendl;A()coutA:Destructor endl;class B:public A public: B()coutB:Constructor endl; B()coutB:Destructorendl;void main() B b;结果:A:ConstructorB:ConstructorB:DestructorA:Destructor5.#includeclass smallonepublic:smallone(int sma) coutsm constr:sman;void fn(int n) smallone sm(n);coutin function fn with n=nendl;int main() fn(10); fn(20); return 0;结果:sm constr:10in function fn with n=10sm constr:20in function fn with n=206.#include int amount=123; void main()int amount=456; cout:amount,; coutamount,; :amount=789; cout:amount,; coutamountendl; 结果:123,456,789,4567.#include void main(void)int i=10;int &r=i; r+;couti=i, r=rn;i=88; couti=i, r=rn;结果:i=11,r=11i=88,r=888.#include int main() int i=0,a=0,s=1;doa=a+s*i;s=-s;i+;while (i10);couta=aendl;return 0;结果:a=-59.#include using namespace std;int main()int *p,i; i=15;p=&i;i=*p-1;couti=iendl;return 0;结果:i=1410.#include int main() int sum=0;for(int i=1;i=3;i+)for(int j=1;j=i;j+)sum+;coutsum=sumendl;return 0;结果:sum=611.#include using 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(5,7,9);cout圆心为:(c.getx(),c.gety()endl;cout半径为:c.getr()endl;cout面积为:c.area()endl;return 0;结果:圆心为:(5,7)半径为:9面积为:254.46912.#include using namespace std;class Aprivate:int x;int y;public:A(int a,int b)x=a;y=b;void print()coutx=x;y=yendl;int main()A a(50,100);a.print();return 0;结果:x=50;y=10013.#include using namespace std;int sum(int x, int y);int sum(int x, int y, int z);double sum(double x, double y);double sum(double x, double y, double z);int main()coutsum(2, 5)endl;coutsum(2, 5, 7)endl;coutsum(1.2, 5.0, 7.5)endl;return 0;int sum(int x, int y)return x+y;int sum(int x, int y, int z)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;结果:71413.7五、编程题:1、定义一个求两(或三)个整数中较大值的函数max( ),要求定义成内联函数,然后在main( )函数中进行调用。#include using namespace std;inline int max(int a, int b, int c)if (ab) a=b;if (ac) a=c;return a;int main()int a,b,c,m;coutPlease input a,b,c:abc;m=max(a,b,c);coutThe maximum integer is:mendl;return 0;2、设计一个实现两个参数交换的函数,要求用引用作为函数的参数。输入三个实数,按降序排序后输出。#include using namespace std;void swap(float &x, float &y);int main()float a,b,c;coutPlease input a,b,c:abc;if (ab) swap(a,b);if (ac) swap(a,c);if (bc) swap(b,c);coutThe order of is: a=a b=b c=cendl;return 0;void swap(float &x, float &y)int temp;temp=x; x=y; y=temp;3、类Person的定义如下,请实现该类,并创建对象obj,然后使用构造函数为obj赋予初始值(内容自定),并使用disp函数输出各成员变量的值。class Personprivate:char name10;int age;int salary;char tel8;public:Person(char *xname,int xage,int xsalary,char *xtel);void disp();#include #include using namespace std;class Personprivate:char name10;int age;int salary;char tel8;public:Person(char *xname,int xage,int xsalary,char *xtel);void disp();Person:Person(char *xname,int xage,int xsalary,char *xtel)strcpy(name,xname);age=xage;salary=xsalary;strcpy(tel,xtel);void Person:disp()coutendl;cout姓名:nameendl;cout年龄:ageendl;cout工资:s

温馨提示

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

评论

0/150

提交评论