版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.C+ 期末考试复习题一、选择题1. 在声明类时,下面的说法正确的是(C)。A. 可以在类的声明中给数据成员赋初值B. 数据成员的数据类型可以是registerC.private 、 public 、 protected 可以按任意顺序出现D. 没有用private、 public 、 protected 定义的数据成员是公有成员2. 在一个类的定义中,包含有(C)成员的定义。A. 数据B. 函数C. 数据和函数D. 数据或函数3. 假定 AA 为一个类, int a() 为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为( A )。A. int AA:a()B. int AA:a
2、()C. AA:a()D. AA:int a()4.假定 AA为一个类, a 为该类公有的数据成员,px 为指向该类对象的一个指针,则访问px 所指对象中数据成员a 的格式为(C)。A. px(a)B. pxaC. px-aD. px.a5.下列关于运算符new 的描述中,错误的是(D)。A 它可以创建对象或变量B 它可以创建对象数组或一般类型数组C用它创建对象或对象数组时要调用相应的构造函数 D用它创建的对象可以不用 delete 运算符释放6. 在下面有关析构函数特征的描述中,正确的是(A)。A. 一个类中可以定义多个析构函数B.析构函数名与类名完全相同C.析构函数不能指定返回类型D. 析
3、构函数可以由一个或多个参数7. 构造函数是在( B )时被执行的。A. 程序编译B. 创建对象C.创建类D. 程序装入内存8. 友元的作用之一是(A)。.A. 提高程序的运行效率B. 加强类的封装性C.实现数据的隐藏性D. 增加成员函数的种类9.设置虚基类的目的是(B )。A. 简化程序B.消除二义性C. 提高运行效率D.减少目标代码10.回值的纯虚函数,正确的写法是(B )。A.virtual show () =0;B.virtual void show();C.virtual void show () =0; D. void show () =0 virtual ;11.重载函数在调用时选
4、择的依据中,(B)是错误的。A. 函数名字B. 函数的返回类型C.参数个数D .参数的类型12.已知: int fun (int a),m=10;下列调用 fum() 函数的语句中,正确的是(C)。A fun( m);B fun (m*2);C fun (m) ;D fun (m+);13.下列各种类中,不能定义对象的类是(B)。A 派生类B 抽象类C嵌套类D虚基类14.类中定义的成员默认为(A)访问属性。A. publicB. privateC. protectedD. friend15.静态成员函数对类的数据成员访问(B)。A. 是不允许的B. 只允许是静态数据成员C. 只允许是非静态数据
5、成员D. 可允许是静态数据成员或非静态数据成员16.在下列语句中,将函数int f_sum(int x,int y)正确重载的是( A)。A.float f_sum(int x,int y)B.int f_sum(int a,int b)C.int f_sum(int x)D.float f_sum(int a,int b)17.下列各语句是输出字符 A 的,其中错误语句是(B )。A coutA;B cout.put(A);C char ch=A;coutch;D coutput(A);18.当将一个类 A或函数 f() 说明为另一个类B 的友元后, 类 A 或函数 f() 能够直接访问类
6、B.的(D )。A.只能是公有成员B. 只能是保护成员C. 只能是除私有成员之外的任何成员D. 具有任何权限的成员19. C+ 语言程序中进行文件操作时应包含的头文件是(A)。A fstream.hB math.hC stdlib.hD strstrea.h20.在 C+ 程序中使用的 cin 标识符是系统类库中定义的(A)类中的一个对象。A. istreamB. ostreamC. iostreamD. fstream21.已知: char n=p;在下列表示引用的方法中,()是正确的。A.char &x=n;B. char &y=p;C. char &z;D.float &t=&n;22.
7、 在( A )情况下适宜采用内联函数。A. 函数代码小,频繁调用B. 函数代码多,频繁调用C.函数体含有递归语句D. 函数体含有循环语句23. 如果表达式 a+b 中的 “ +是”作为友元函数重载的运算符,若采用运算符函数调用格式,则可表示为()。A. a.operator+(b)B. b.operator+(a)C. operator+(a,b)D. operator(a+b)24.执行完循环for(i=1;i100;i+); 后, i的值为 (B )。A. 99B. 100C. 101D. 10225.假定一个类对象数组为An ,当离开它定义的作用域时,系统自动调用该类析构函数的次数为 (
8、C)。A. 0B. 1C. nD. n-126.在 C+ 程序中使用的cout 标识符是系统类库中定义的(B)类中的一个对象。A. istreamB. ostreamC. iostreamD. fstream二、填空题1.在下面一段类定义中,Derived 类是由直接基类Base 1和 Base 2 所派生的, Derived类包含有两个间接基类BaseBase,在初始化函数 Init中,需要把x1 和 x2 的值分别赋给属.于基类 Base1 的 x 成员和属于基类Base2 的 x 成员。class BaseBase protected:int x;public:BaseBase() x
9、= 1;class Base1: public BaseBase public:Base1();class Base2: public BaseBase public:Base2();class Derived:(1)public Base1,(2)public Base2public:Derived() void Init(int x1, int x2) (3)Base1:x=x1;_(4)_ Base2:x=x2_;(5)voidoutput() coutBase1:x Base2:xendl;.2. 该类中 MaxA() 函数的实现如下,请在标号位置补充适当的内容。int(1) int
10、a int x=a0;for(int i=1; ix) (2)a j+i=j ;(3)break ;.class A char *a;public:_(1)_ _/ 定义无参构造函数,使a 的值为空A(char *aa) a=_(2) _ _;strcpy(a,aa);/用 aa 所指字符串初始化a 所指向的动态存储空间_(3)_ _/ 定义析构函数,删除a 所指向的动态存储空间;class Pointprivate:int x, y;public:Point() x=y=0; Point(int x0,int y0) x=x0;y=y0;int GetX() return x; int Ge
11、tY() return y; void Print()coutPoint(x,y)endl;.1Point operator+(Point & pt,int dd);/友元函数声明2;/友元函数声明;Point operator+(Point& pt,int dd)/ 加号操作符重载函数,实现Point 类对象与整数加法Point temp=pt;3 ;temp.y+=dd; return temp;Point operator+(Point& pt1,Point& pt2)/ 加号操作符重载函数,实现两个Point 类对象的加法Point temp;temp.x=pt1.x+pt2.x;4;
12、return5;.3. 下列程序的功能是,建立磁盘文件 1.txt ,从键盘输入一行字符串,以回车键结束,将其中的字母字符存放在文件 1.txt 中,请填空完成该程序。#includeusing namaspace std;int main()char a80;/定义输出流对象outfileif(!outfile1)cerr 打开文件出错!endl;exit(1);/ 从键盘读入一行字符for(int i=0;ci!=0;i+)if()coutendl;.;return 0;四、根据程序试写出运行结果1.#include void main()inti, j;int*p1, *p2;p1=&i
13、; p2=&j ;i=3; j=6;couti=i j=jendl;cout*p1=*p1 *p2=*p2endl;*p1=5;*p2=8;couti=i j=jendl;cout*p1=*p1 *p2=*p2endl;2.#include#includeclass CD char* a;int b;public:void Init(char* aa, int bb)a=new charstrlen(aa)+1;strcpy(a,aa);b=bb;char* Geta() return a;int Getb() return b;void Output() couta bendl;void m
14、ain()CD dx,dy;char a20;dx.Init(abcdef,30);strcpy(a,dx.Geta();strcat(a,xyz);dy.Init(a,dx.Getb()+20);dx.Output();.dy.Output();3.#includeclass A int a10; int n;public:A(int aa, int nn): n(nn) for(int i=0; in; i+)ai=aai;int Get(int i) return ai;int SumA(int n) int s=0;for(int j=0; jn; j+)s+=aj;return s;
15、void main() int a=2,5,8,10,15,20;.A x(a,4); A y(a,6); int d=1;for(int i=0; i4; i+) d*=x.Get(i); int f=y.SumA(5); coutd=dendl; coutf=fendl;4.#includeclass circle protected:int r;public:void setr(int x) r=x; virtual void show( )=0;class area:public circlepublic:void show( ). cout 这个圆的面积是 :3.14*r*rendl
16、; ; class perimeter:public circlepublic:void show( ) cout 这个圆的周长是 : 2*3.14*rshow();ptr=&ob2; ptr-show();5.#includeclass A public:A( ) cout A; .;class B public:B( ) cout B; ;class C: public A public:C( ) cout C; private:B b;int main ( )C obj; return 0;6.#includeclass small_catdouble weight;/普通数据成员,表示
17、一只小猫的重量static double total_weight;/ 静态数据成员,用来累计小猫的重量static double total_number; / 静态数据成员,用来累计小猫的只数public:small_cat(double w)/构造函数 weight=w;total_weight+=w;/ 累加小猫的重量total_number+; / 累加小猫的只数void display() cout 这只小猫的重量是weight 千克 n;static void total_disp() couttotal_number 只的小猫的总重量是;couttotal_weight 千克
18、endl; ;double small_cat:total_weight=0;/ 静态数据成员初始化double small_cat:total_number=0; / 静态数据成员初始化int main()small_cat w1(0.5),w2(0.6),w3(0.4);w1.display();/ 调用普通成员函数,显示第 1只小猫的重量w2.display();/ 调用普通成员函数,显示第 2只小猫的重量w3.display();/ 调用普通成员函数,显示第 3只小猫的重量small_cat:total_disp();/调用静态成员函数return 0; / 显示小猫的只数和总重量.五
19、、编程题1. 编程求圆、圆内接正方形和圈外切正方形的面积和周长。要求使用抽象类。解:#include const double PI=3.1415;class Shapepublic:Shape(double i) r=i; virtual void Area()=0;virtual void Perimeter()=0;protected:double r;class Circle:public Shapepublic:Circle(double i):Shape(i) void Area() cout圆的面积是PI*r*rendl; .void Perimeter() cout圆的周长是2
20、*PI*rendl; ;class In_Square:public Shapepublic:In_Square(double i):Shape(i) void Area() cout圆内接正方形的面积是2*r*rendl; void Perimeter() cout圆内接正方形的周长是4*1.414*rendl; ;class Ex_Square:public Shapepublic:Ex_Square(double i):Shape(i) void Area() cout圆外切正方形的面积是4*r*rendl; void Perimeter(). cout圆外切正方形的周长是8*rArea
21、();ps-Perimeter();ps=new In_Square(8);ps-Area();ps-Perimeter();ps=new Ex_Square(8);ps-Area();ps-Perimeter();delete ps;(附上运行结果:.)2. 已知复数类 Complex 的声明如下:class Complexpublic:Complex();/无参构造函数Complex(double );/转换构造函数Complex(double, double);/有两个形参的构造函数friend Complex operator+(Complex&, Complex&);/对“ +”运算
22、符进行重载friend ostream& operator(ostream&, Complex&); /对“ (istream&, Complex&); /对“ ”运算符进行重载private:double real,imag;要求:( 1)写出该类的所有构造函数的类外定义代码。( 2)写出对运算符“ +”、“ ”进行重载的运算符重载函数的定义。3. 编写程序 , 计算出复数对象 c1 和 c2 相加结果 , 并将其结果输出。.4.从建立的数据文件f1.dat中读入 10 个整数放在数组中, 找出并输出10 个数中的最大者和它在数组中的序号。解:#include #includeusing namespace std;int main( )int a10,max,i,order;fstream infile(f1.dat, ios:in );if( !infile )cerropen error!endl; exit(1); for(i=0;iai ;coutai ;coutendl;max=a0;order=0;for(i=1;imax).max=ai; order=i;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 明亮未来的英语演讲稿
- 车间安全员的演讲稿
- 谈谈中学生早恋演讲稿
- 责任和自强有关的演讲稿
- 黄疸护理基础知识
- 矿山车间主任应聘演讲稿
- 演讲稿逐梦还是筑梦
- 鼾症护理中的护理健康教育策略
- 提高能源利用率推进低碳生产方式
- 《PLC控制技术及应用》课件-知识延伸:添加数据块
- 中职高教版(2023)语文职业模块-第一单元1.1七律二首-送瘟神【课件】
- 6G通感算智融合技术体系白皮书
- 2024年保险理赔人伤协议书模板
- 【某住宅楼的施工组织设计(附进度图平面图)10000字(论文)】
- 家用电器的安全使用
- 大学生职业生涯规划与就业指导第2版(高职)全套教学课件
- 校区保洁投标方案
- 深化设计业务管理方案
- 汽车吊起重吊装专项施工方案
- 肾结石病历报告模板
- 微笑主题班会一等奖
评论
0/150
提交评论