




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、 选择题1 关于类的描述,下列说法正确的是( C ) A. 可以在类的声明中给数据成员赋初值/不可以? 只能在定义时赋初始值/不太严谨,因为若类的声明和定义在都是在类中的话,是可以的/但是在分文件编译的时候是不可以的B. 若类的数据成员和成员函数没有显式声明访问权限,则默认其为public成员 /privateC. 若定义一个函数为类的友元函数,则在友元函数中可以访问该类的protected和private成员 /即破坏了类的封装性,有好有坏D. 一个类可以有多个构造函数,也可以有多个析构函数/ 可以重载构造函数 但是不能重载析构函数,故一个析构函数2 关于函数重载和运算符重载的描述,下列说法错误的是 ( B ) A. :和.运算符均不能被重载/不能被重载的运算符还有 .* 和 sizeof 和 ?: B. 函数重载是在程序运行阶段确定所调用的函数代码/在编译阶段即生成目标文件(.obj或.o)所以这个叫静态编译(也有叫静态联编),与之对应的是动态编译(动态联编)C. 一个类的构造函数可以重载,析构函数不可以重载D. 运算符重载可以通过类内成员函数和类外友元函数两种形式来实现3 关于继承的描述,下列说法错误的是( A ) A. 派生类中继承的基类成员的访问权限到派生类中保持不变/取决于什么继承方式和基类成员的属性B. 派生类对基类的继承方式包括public、private和protected三种C. 派生类的成员除了它自己的成员外,还包含了它的基类的成员 /还可能包含了D. 派生类可以重新定义基类的成员函数,并且覆盖基类的同名函数4 下面叙述错误的是( C ) A. 基类的protected成员在private派生类中是private的B. 基类的protected成员在public派生类中仍是protected的C. 基类的protected成员在派生类中仍是protected的/取决于什么继承方式, A就是一个反例D. 基类的protected成员不能被派生类的对象所访问/只能被类中的成员函数访问5 以下( 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 将下列程序填写完整,并写出程序运行结果。#include class Studentpublic:Student()/ 构造函数count+;num= count; Student() / 析构函数 count-; void show()coutstudent No. num;cout, count = count show();delete ps; s2.show();(1)请将程序中空白处应填的代码补充完整。(2)请写出程序的运行结果。2 将下列程序填写完整,并写出程序运行结果。#include class Shape public: virtual void area( ) /将area()设定为虚函数coutShape:area()endl; ;class Circle: public Shape public:void area()coutCircle:area()endl; ;class Square: public Shape public:void area()coutSquare:area()area();P=&s1;P-area();Shape A;A=c1;A.area();A=s1;A.area();(1)请将程序中空白处应填的代码补充完整。(2)请写出程序的运行结果。3 将下列程序填写完整,并写出程序运行结果。class complexpublic:complex(double r=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)i friend complex operator - (complex & com1,complex & com2) complex temp; temp.real = com1.real - com2.real; temp.image = com1.image - com2.image; return temp;void print()cout0)cout+imagei;else if(image0)coutimagei;coutn;protected:double real,image;void main()complex c1(3,5);complex c2(4);complex c3;c1=c1+c2+c3;c1.print();c3=c2-c1;c3.print();(1)请将程序中空白1)-6)处应填的代码补充完整。(2)请写出程序的运行结果。4 阅读下列程序,并写出程序运行结果。class Base1protected: int data1;public:Base1()data1=0;cout Default Constructor Base1, data1=data1endl; Base1(int a)data1=a; cout Constructor Base1, data1=data1endl;class Base2protected: int data2;public:Base2()data2=0;cout Default Constructor Base2, data2=data2endl;Base2(int a)data2=a; cout Constructor Base2, data2=data2endl;class Derived: public Base1, private Base2 private:int d;Base2 memberB2;Base1 memberB1;public:Derived(int m, int n, int p, int q):memberB1(p),Base2(m), Base1(n) d=q; cout Constructor Derived, d=dendl;void main( ) Derived c(1, 2, 3, 4);Constructor Base1, data1=2 /class Derived: public Base1, private Base2 Constructor Base2, data2=1 Default Constructor Base2, data2=0 / Base2 memberB2; Base1 memberB1; Constructor Base1, data1=3 / memberB1;这个成员被初始化 Constructor Derived, d=4 / 自身的成员三、 编程题设计和实现一个时间类,并利用该类进行编程和测试,要求如下: 1)类名为: ClsClock;2)类有三个int类型的私有数据成员:hour、minute、second;3)为该类设计三个构造函数:分别是无参数(hour、minute、second初始化为0)/*这里要注意初始化和赋值的区别*/、带三个参数的构造函数以及拷贝构造函数;4)设计相应成员函数用来设置数据成员hour、minute、second的值;5)设计相应成员函数用来在屏幕上打印时间信息;6)编写主函数测试。#includeusing namespace std;class ClsClockprivate: int Nhour; int Nminute; int Nsecond; void setHour(int hour); void setMinute(int minute); void setSecond(int second);public: ClsClock(); ClsClock(int hour,int minute,int second); ClsClock(ClsClock&); void showClock () ;ClsClock:ClsClock() setHour(0); setMinute(0); setSecond(0);ClsClock:ClsClock(int hour, int minute, int second) setHour(hour); setMinute(minute); setSecond(second);ClsClock:ClsClock(ClsClock& cls) /* 由于没有定义赋值运算函数 所以尽量避免使用=赋值,但是在此处也可以这么写,但是不建议,这关乎习惯 *this = cls; */ Nhour = cls.Nhour; Nminute = cls.Nminute; Nsecond = cls.Nsecond;void ClsClock:setHour(int hour) if (hour 0 & hour 0 & minute 24 | second 0) throw string (there is a error about set second); catch (string &e) cout e endl; Nsecond = 0; void ClsClock:showClock() cout Nhour : Nminute :Nsecond ;/* 测试函数*/int main() ClsClock clock(19,20,61); ClsClock newclock(clock); clock.showClock(); cout endl; newclock.showClock(); return 0; /*=*/1. 试建立一个类 Student 用于描述学生信息,具体要求如下: (1)私有数据成员int id: 学生学号。char yuwen: 语文成绩(五级分制:A、B、C、D和E,其它无效)。float shuxue: 数学成绩(百分制)。 (2)公有成员函数1)缺省构造函数:初始化数据成员为0或NULL值。 /对于一个char值,null个啥。2)带参构造函数:用参数初始化数据成员(需判断参数是否有效)。 /什么叫有效,标准是什么呀3)void Print( ): 输出本对象的学号、语文成绩(优,良,中,及格,不及格)和数学成绩。4) 修改函数void Change( ):从键盘输入新的学号、语文成绩和数学成绩,修改相应数据成员的值。接受输入前屏幕上显示提示输入哪些信息。(3)主程序:定义三个以上的对象,并且每个成员函数至少被调用一次,比如:void main() Student A(78,E,86),B(84,D,82),C; A.Print(B,C);C.Change(); #include using namespace std;/* 看到这样的变量名我也是醉了 写完这题我看了一集天线宝宝*/class Student int id; char yuwen; float shuxue;public: Student () ; Student (int _id,char _yuwen,float _shuxue) ; void Print(Student & stu); void Change();Student:Student() : id(0),yuwen( ),shuxue(0) Student:Student(int _id, char _yuwen, float _shuxue) id = _id; yuwen = ( (_yuwen = A | _yuwen = 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 学号:stu.id 语文:; if (stu.yuwen = A | stu.yuwen = a) cout 优; else if(stu.yuwen = B | stu.yuwen = b) cout 良; else if(stu.yuwen = C | stu.yuwen = c) cout 中; else if(stu.yuwen = D | stu.yuwen = d) cout 及格; else if(stu.yuwen = E | stu.yuwen = e) cout 不及格; else if(stu.yuwen= ) cout unknow; cout 数学: stu.shuxue;void Student:Change() int input_id; cout input_id ; cout your id is input_id endl; id = input_id; char input_yuwen; cout input_yuwen; cout your yuwen is input_yuwenendl; yuwen = input_yuwen; float input_shuxue; cout input_shuxue; cout your shuxue is input_shuxueendl; shuxue = input_shuxue;int main() Student A(78,E,86),B(84,D,82),C;A.Print(B);cout endl;A.Print(C);cout endl; C.Change(); C.Print(C); return 0;/*=*/2. 在题目1的基础上,增加如下功能:1)对类Student重载 “+”运算符,两个Student对象相加时,含义是语文成绩与语言成绩相加,数学成绩与数学成绩相加;/有什么意义,那么学号怎么办,还有你考虑过一个char值得区别么2)从Student公有派生出一个类,名为Student1,Student1完成如下功能:l 增加一个私有数据成员char name10,用于记录学生姓名。l 完成Student1类构造函数的编写,使其能用参数对所有数据成员初始化。l 修改Print函数,使其能输出本对象的学号、姓名、语言成绩、数学成绩;这题实在天线宝宝,就算了/*=*/要求:在main函数中增加相应代码进行测试。1. 试建立一个类date用于描述日期对象,具体要求如下:(1)私有数据成员int year: 年int month: 月 int day: 日(2)公有成员函数date ( ): 构造函数,初始化数据成员为默认值(均为1)。date (): 构造函数(自己定义参数, 需判断参数是否有效),用参数初始化数据成员。void set():用给定的参数修改数据成员的值(自己定义参数, 需判断参数是否有效)。void display( ): 打印输出该日期。(3)在主程序中定义至少三个取值各不相同date类对象作为测试数据,完成对date类和程序的测试。每个成员函数至少被调用一次,比如:void main() date date1(1998,10,28),date2(2008,10,28),date3; date1.display(); date1.set(2008,8,8);date1.display(); date2.display();date3.display();#include using 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();date:date() 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 0) Nyear = 0; else Nyear = year; if(month 12) Nmonth = 0; else Nmonth = month; if (day 31) Nday = 0; else Nday = day;void date:display() cout year:Nyear month:Nmonth day:Nday;int main() date date1(1998,10,28),date2(2008,10,28),date3; date1.display(); cout endl; date1.set(2008,8,8); date1.display(); cout endl; date2.display(); cout endl; date3.display(); return 0;/*=*/2. 在题目1的基础上,增加如下功能:(1)对类date重载前置 “+”运算符,含义为日期增加一天; (2)从date公有派生出一个类,名为DateDerived,在DateDerived完成如下功能:l 增加一个私有数据成员int runnian(1表示闰年,0表示非闰年),用于记录当年是否为闰年。/那用bool不就行了么,为什么用四字节的intl 在DateDerived类中完成构造函数的编写,使其能初始化year、month、day和runnian;l 修改display函数,使其能输出本对象的year、month、day和runnian;要求:在main函数中增加相应代码进行测试。#include using 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);void date:set(int year, int month, int day) if(year 1) Nyear = 1; else Nyear = year; if(month 12) Nmonth = 1; else Nmonth = month; if (day 31) Nday = 1; else Nday = day;void date:display() cout Nyear /Nmonth /Nday;void date:operator+() if (Nday = 31) Nday = 1; else Nday +;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; else return 0;DateDerived:DateDerived(int year, int month, int day) set(year,month,day); Nruinian = judgeRuinian(year);void DateDerived :display() date:display(); cout endl; if (Nruinian = 1) cout 是瑞年endl; else cout 不是瑞年endl;int main() /* date date1(1998,10,28),date2(2008,10,28),date3; date1.display(); cout endl; date1.set(2008,8,8); +date1; date1.display(); cout endl; date2.display(); cout endl; date3.display(); */ DateDerived date(2008,10,28); date.display(); return 0;/*=*/1. 试建立一个类worker用于描述职工对象,具体要求如下:(1)私有数据成员int id: 职工号。float wage: 工资。(最低值为200)char level: 技术等级(A一等,B二等,C三等,其它为无级)(2)公有成员函数worker ( ):构造函数,初始化数据成员为默认值(数值型成员均为0,字符型成员为空值)。worker ():构造函数(自己定义参数),用参数初始化数据成员。void List( ): 输出职工的各项信息。void set( ): 从键盘输入新的数据,修改数据成员的值。接受输入前屏幕上显示提示输入哪些信息。(3)在主程序中定义三个worker对象作为测试数据,完成对worker类和程序的测试。每个成员函数至少被调用一次。void main() worker wo1(1208,2000,C), wo2(1207,3000,B), wo3; wo1. List (); wo1.set (1205,2500,B); wo1. List ();wo2. List ();wo3.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 儿童美术课件生日聚会
- 2025-2030中国单向旋转闸行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国光伏行业投资建议与企业经营形势分析报告
- 2025-2030中国保龄球市场盈利规模预测与融资渠道研究报告版
- 2025-2030中国低熔点EVA袋行业现状调查与前景策略分析报告
- 哔哩哔哩《镇魂街 风花雪月篇》国创项目介绍
- 2025年中国光探测芯片行业发展运行现状及投资战略规划报告
- 滕州科目四考试试题及答案
- 2025内蒙古巴彦淖尔市交通投资(集团)有限公司(第一批)招聘40人笔试历年参考题库附带答案详解
- 儿童美术纸盘画课件
- MDS3400调度交换机的结构39课件
- 儒家视角下的文明交流与互鉴探讨
- 2025-2030机器人操作系统行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 2025-2030中国多动症治疗行业市场发展趋势与前景展望战略研究报告
- 企业安全文化建设中急救培训的重要性及策略探讨
- 2024年辽宁沈阳水务集团有限公司招聘笔试真题
- 潍坊交通发展集团有限公司招聘笔试题库2025
- 胸痛中心质控管理
- 2025时政试题及答案(100题)
- 第七章城市轨道交通屏蔽门设备接口68课件
- 国家开放大学汉语言文学本科《中国现代文学专题》期末纸质考试第三大题分析题库2025春期版
评论
0/150
提交评论