天津理工大学大二c++期中复习

上传人:第*** 文档编号:33930560 上传时间:2018-02-19 格式:DOC 页数:17 大小:93.50KB
返回 下载 相关 举报
天津理工大学大二c++期中复习_第1页
第1页 / 共17页
天津理工大学大二c++期中复习_第2页
第2页 / 共17页
天津理工大学大二c++期中复习_第3页
第3页 / 共17页
天津理工大学大二c++期中复习_第4页
第4页 / 共17页
天津理工大学大二c++期中复习_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《天津理工大学大二c++期中复习》由会员分享,可在线阅读,更多相关《天津理工大学大二c++期中复习(17页珍藏版)》请在金锄头文库上搜索。

1、试卷编号: 1-A 第 1 页 共 17 页一、 选择题1 关于类的描述,下列说法正确的是( C ) A. 可以在类的声明中给数据成员赋初值/不可以? 只能在定义时赋初始值/不太严谨,因为若类的声明和定义在都是在类中的话,是可以的/但是在分文件编译的时候是不可以的B. 若类的数据成员和成员函数没有显式声明访问权限,则默认其为public成员 /privateC. 若定义一个函数为类的友元函数,则在友元函数中可以访问该类的protected和private成员 /即破坏了类的封装性,有好有坏D. 一个类可以有多个构造函数,也可以有多个析构函数 / 可以重载构造函数 但是不能重载析构函数,故一个析

2、构函数2 关于函数重载和运算符重载的描述,下列说法错误的是 ( B ) A. :和.运算符均不能被重载/不能被重载的运算符还有 .* 和 sizeof 和 ?: B. 函数重载是在程序运行阶段确定所调用的函数代码/在编译阶段即生成目标文件(.obj或.o)所以这个叫静态编译(也有叫静态联编),与之对应的是动态编译(动态联编)C. 一个类的构造函数可以重载,析构函数不可以重载D. 运算符重载可以通过类内成员函数和类外友元函数两种形式来实现3 关于继承的描述,下列说法错误的是( A ) A. 派生类中继承的基类成员的访问权限到派生类中保持不变 /取决于什么继承方式和基类成员的属性B. 派生类对基类

3、的继承方式包括public、private和protected三种C. 派生类的成员除了它自己的成员外,还包含了它的基类的成员 /还可能包含了D. 派生类可以重新定义基类的成员函数,并且覆盖基类的同名函数4 下面叙述错误的是( C ) A. 基类的protected 成员在 private派生类中是private的B. 基类的 protected成员在public派生类中仍是protected的C. 基类的 protected成员在派生类中仍是protected 的 /取决于什么继承方式, A 就是一个反例D. 基类的protected 成员不能被派生类的对象所访问/只能被类中的成员函数访问5

4、 以下( C )函数为纯虚函数。A. virtual int vf(int); B. void vf(int)=0;C. virtual void vf()=0; D. virtual void vf(int)/ 还有 virtual void vf() const =0;二、 程序阅读与填空题1 将下列程序填写完整,并写出程序运行结果。试卷编号: 1-A 第 2 页 共 17 页#include class Studentpublic:Student() / 构造函数 count+;num= count; Student() / 析构函数 count-; void show() coutsh

5、ow();delete ps;s2.show();(1)请将程序中空白处应填的代码补充完整。(2)请写出程序的运行结果。2 将下列程序填写完整,并写出程序运行结果。#include class Shape public: virtual void area( ) /将 area()设定为虚函数 coutarea();P=P-area();Shape A;A=c1;A.area();A=s1;A.area();(1)请将程序中空白处应填的代码补充完整。(2)请写出程序的运行结果。3 将下列程序填写完整,并写出程序运行结果。class complexpublic:complex(double r=

6、0,double i=0) real=r; image=i; / 以类内成员函数的形式重载运算符“+”,实现两个复数相加,/ 要求运算法则满足:(a+bi)+(c+di)=(a+c)+(b+d)i/记住此处千万不能返回引用complex operator +(complex & com) complex temp;temp.real = real + com.real; temp.image = image + com.image; return temp;/ 以类外友元函数的形式重载运算符“-”,实现两个复数相减/ 要求运算法则满足:(a+bi)-(c+di)=(a-c)+(b-d)ifri

7、end complex operator - (complex & com1,complex & com2) 试卷编号: 1-A 第 4 页 共 17 页complex temp;temp.real = com1.real - com2.real; temp.image = com1.image - com2.image; return temp;void print()cout0)coutusing namespace std;class ClsClockprivate:int Nhour;int Nminute;int Nsecond;void setHour(int hour);void

8、 setMinute(int minute);void setSecond(int second);public:ClsClock();ClsClock(int hour,int minute,int second);ClsClock(ClsClockvoid showClock () ;ClsClock:ClsClock()setHour(0);setMinute(0);setSecond(0);ClsClock:ClsClock(int hour, int minute, int second)setHour(hour);setMinute(minute);setSecond(second

9、);ClsClock:ClsClock(ClsClock& cls)/*由于没有定义赋值运算函数 所以尽量避免使用=赋值,但是在此处也可以这么写,但是不建议,这关乎习惯试卷编号: 1-A 第 7 页 共 17 页*this = cls;*/Nhour = cls.Nhour;Nminute = cls.Nminute;Nsecond = cls.Nsecond;void ClsClock:setHour(int hour)if (hour 0 & hour 0 & minute 24 | second using namespace std;/*看到这样的变量名我也是醉了试卷编号: 1-A 第

10、 9 页 共 17 页写完这题我看了一集天线宝宝*/class Studentint id;char yuwen;float shuxue;public:Student () ;Student (int _id,char _yuwen,float _shuxue) ;void Print(Student void Change();Student:Student() : id(0),yuwen( ),shuxue(0) Student:Student(int _id, char _yuwen, float _shuxue)id = _id;yuwen =(_yuwen = A | _yuwen

11、 = a|_yuwen =B|_yuwen =b|_yuwen =C|_yuwen =c|_yuwen =D|_yuwen =d|_yuwen =E|_yuwen =e)?_yuwen : );shuxue = (_shuxue 100) ?0 : _shuxue);void Student:Print(Student& stu)cout input_id ;cout input_yuwen;cout input_shuxue;cout using namespace std;class dateprivate:int Nyear;int Nmonth;int Nday;public:date

12、();date(int year,int month,int day);void set(int year,int month,int day);void display();date:date()试卷编号: 1-A 第 12 页 共 17 页set(1,1,1);date:date(int year, int month, int day)set(year,month,day);void date:set(int year, int month, int day)if(year 12)Nmonth = 0;elseNmonth = month;if (day 31)Nday = 0;else

13、Nday = day;void date:display()coutusing namespace std;class dateprivate:int Nyear;int Nmonth;int Nday;public:date();date(int year,int month,int day);void set(int year,int month,int day);void display();void operator + ();date:date()set(1,1,1);date:date(int year, int month, int day)set(year,month,day)

14、;void date:set(int year, int month, int day)if(year 12)Nmonth = 1;elseNmonth = month;if (day 31)Nday = 1;elseNday = day;void date:display()coutNyear/Nmonth/Nday;void date:operator+()if (Nday = 31) Nday = 1;elseNday +;class DateDerived : public dateprivate:int Nruinian;int judgeRuinian(int year);public:DateDerived(int year,int month,int day);void display();int DateDerived:judgeRuinian(int year)/*该年能被 4 整除,但是不能被 100 整除(2)该年能被 400 整除*/if (year % 4 = 0 & year % 100 != 0) | year % 400 = 0)return 1;elseretur

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号