




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第 8 章 类与数据抽象(一)一、选择题。在以下每一题的四个选项中,请选择一个正确的【题 8.1】D【题 8.2】C【题 8.3】C【题8.4】A【题8.5】B【题8.6】B【题8.7】D【题 8.8】A【题8.9】A。【题 8.10】D二、填空题。请在下面各题的空白处填入合适的内容。【题 8.11】标准接口【题 8.12】extern【题 8.13】aa【题 8.14】类,公有【题 8.15】void init(【题8.16】10接口auto bregisterk,t)couta.GetX()”,”a.GetY()【题8.17】Sle(flohar b):f(a),c(b) 【题 8.18】
2、定义对象【题 8.19】tb【题 8.20】类三、程序理解题。请阅读下面的程序,写出程序的运行结果。【题 8.21】1515【题 8.22】Exiting mainDestructor iDestructor i【题 8.23】iveiveS1=1600,S2=2699【题 8.24】one0=3 one1=4two0=(3,5.5)two1=(7,8.8)【题 8.25】5,88:5【题 8.26】535【题 8.27】Please Input the leng 15 12The length is:15 The width is:12 The area is:180【题 8.28】Hi.v
3、al=5nd width:This prHi.val=10val=5Destructor for val=10Destructor for val=10 Destructor for val=10 Destructor for val=5 Exiting main【题 8.29】223332【题 8.30】1 2 3 4四、 简答题。简要回答下列个问题。【题 8.31】全局变量具有哪些优缺点?答:全局变量也称为外部变量,它是在函数外部定义的变量,它保存上一次被修改后的值,便于数据共享,但不方便管理,易引起意想不到的错误。【题8.32】类与对象关系?答:类是一种用户自定义的数据类型,对象是使用自
4、定义的类名在程序中说明的“变量”。或者说类是创建对象的样板;对象是类的实例。【题 8.33】构造函数与普通函数相比在形式上式来分析)不同?(构造函数的作用,它的形答:构造函数是类的一种特殊成员函数,一般情况下,它是专门用来初始化对象成员变量的。构造函数的名字必须与类名相同,它不具有任何类型,不返回任何值。【题 8.34】常对象?答:常对象是指在任何场合都不能对其成员的值进行修改的对象。【题 8.35】类中成员变量怎么进行初始化?答:可以通过构造函数的初始化列表或构造函数的函数体实现。【题 8.36】将类的分开好处?答:1.起保护作用;2.提高编译的效率。五、编程题。对下面【题 8.37】编写一
5、个名为编写成程序并上机验证。的类,用字符串表示人的名字和住址,为提供一个接受两个 string 参数的构造函数,提供返回名字和住址的操作,这些函数应为 const为 public,哪个成员应型吗?请解释为什么。指明 private。请解释为什么。程序如下:#include 的哪个成员应为classprivate:const char * name;const char * address; public:(const char * n, const char * a) name = n;address = a;const char * GetName() return name;const c
6、har * GetAddress() return address;main() tom(Tom,1st Avenue); cout tom.GetName() endl; cout tom.GetAddress() endl; return 0;执行结果:Tom1st Avenue【题 8.38】设计一个立方体类 Box,能计算并输出不同边长立方体的体积和表面积。要求 Box 类包含三个私有数据成员 a(立方体边长)、volume(体积)和 area(表面积),另有两个构造函数以及 seta()( 设置立方体边长)、getvolume()( 计算体积)、getarea()( 计算表面积) 和
7、 display()(输出结果)。程序如下:class Box float a;float volume; float area;public:Box() Box(float r) a = r;void seta(float r) a = r;void getvolume() volume = a * a * a;void getarea() area = 6 * a * a;void disp() cout Volume volume ,area area endl;main() Box obj1(4.5), obj2; obj2.seta(6.4); obj1.getvolume(); o
8、bj1.getarea(); cout ; obj1.disp(); obj2.getvolume(); obj2.getarea(); cout ; obj2.disp();return 0;程序的运行结果如下: obj1=Volume91.125,area121.5 obj2=Volume262.144,area245.76【题 8.39】设计一个点类 Po,再设计一个矩形类,矩形类使用 Po类的两个坐标点作为矩形的对角顶点。并可以输出 4 个坐标值和面积。使用测试程序验证程序。程序如下:#include class Po/点类private:x, y; /私有成员变量,坐标public:
9、Po() /无参数的构造方法,对 xy 初始化x = 0;y = 0;Po(a,b) x = a;y = b;void setXY(x = a; y = b;a,b) getX() /得到 x 的方法return x;getY() /得到有的函数return y;class Rectangle /矩形类private:Popublic:po1, po2, po3, po4;Rectangle(); /类 Po多初始化了的无参构造函数已经对每个对象做初始化啦,这里不用对每个点Rectangle(Poone, Potwo) po1 = one;po4 = two; init();Rectangle
10、(x1,y1,x2,y2) po1.setXY(x1, y1);po4.setXY(x2, y2); init();void init() /给另外两个点做初始化的函数po2.setXY(po4.getX(), po1.getY();po3.setXY(po1.getX(), po4.getY();void prPo() /打印四个点的函数cout A:( po cout B:( po cout C:( po cout D:( po1.getX() , po2.getX() , po3.getX() , po4.getX() , po1.getY() ) endl;2.getY() ) end
11、l;3.getY() ) endl;4.getY() ) 0)return area;elsereturn -area;main() Pop1(-15, 56), p2(89, -10); /定义两个点 Rectangle r1(p1, p2); /用两个点做参数, Rectangle r2(1, 5, 5, 1); /用两队左边,一个矩形对象 r1一个矩形对象 r2cout 矩形 r1 的 4 个定点坐标: endl; r1.prPo();cout 矩形 r1 的面积: r1.getArea() endl; cout n 矩形 r2 的 4 个定点坐标: endl; r2.prPo();co
12、ut 矩形 r2 的面积: r2.getArea() endl;return 0;【题 8.40】使用内联函数设计一个类,用来表示直角坐标系中的任意一条直线并输出它的属性。程序如下:#include #include class Line private:x1, y1, x2, y2;public:Line();Line(= 0,= 0,= 0,= 0);void prPo();double getLength();inline Line:Line( x1 = a;y1 = b; x2 = c; y2 = d;a,b,c,d) inline void Line:prPo() cout A: x
13、1 , y1 endl; cout B: x2 , y2 endl;inline double Line:getLength() double length;length = sqrt(x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1); return length;main() Line line(10, 80, -10, 12); line.prPo();cout line.getLength() endl; return 0;【题 8.41】请编写时间类 Time。其构造函数返回当前时间来初始化类 Time 的对象,并可通过 Time 类的成员函数将
14、类 Time 对象的时间完成以下的操作:(1)(2)(3)(4)能够进入下一分中;能够进入下一小时;能够进入新的一天;以标准格式输出时间。编写程序进试。#include using namespaclass MyTime private:td;day, hour, minute;public:MyTime(d,h,m) day = d % 365;hour = h % 24; minute = m % 60;void NextDay() day = (day + 1) % 365;void NextHour() hour = (hour + 1) % 24; if (hour = 0)Next
15、Day();void NextMinute() minute = (minute + 1) % 60; if (minute = 0)NextHour();void PrTime() cout Day day hour : minute endl;main() MyTime t(2, 6, 24);t.PrTime(); t.NextMinute(); t.PrTime();t.NextHour();t.PrTime();t.NextDay();t.PrTime(); return 0;程序运行结果:DayDayDay Day22236:246:257:257:25【题】建立用于完成复数运算的
16、类plex。复数的实部和虚部作为该类的私有数据成员,用浮点数表示。要求构造函数对每一个复数对象的初值都赋值为 0。其他共有成员函数能够完成如下的功能:(1)(2)(3)(4)(5)设置复数对象的值;两个复数相加;两个复数相减;两个复数相乘;以(a+bi)的形式输出复数编写程序进试。程序如下:#include using namespatd;classprivate:plex double real, imaginary;plex(double r, double i) SetNumber(r,i);public:plex() real = 0;imaginary = 0;void SetNum
17、ber(double r, double i) real = r;imaginary = i;sicreturnplex Add(plex c1,plex c2)plex(c1.real + c2.real,c1.imaginary + c2.imaginary);sicreturnplex Sub(plex c1,plex c2)plex(c1.real - c2.real,c1.imaginary - c2.imaginary);sicplex Mult(plex c1,plex c2)double n_real = c1.real * c2.real + c1.imaginary * c
18、2.imaginary ;double n_imaginary = c1.imaginary * c2.real + c1.real * c2.imaginary;returnplex(n_real, n_imaginary);void PrNumber()cout real + imaginary i endl;main() plex c1,c2;c1.SetNumber(3,4); c2.SetNumber(5,6);plex c3 =plex:Add(c1,c2);c3.PrNumber();plex c4 = Number(); plex c5 = Number();plex:Sub(
19、c1,c2);c4.Prplex:Mult(c1,c2);c5.Prreturn 0;程序运行结果:8+10i-2+-2i 39+38i【题 8.43】建立用于完成分数形式算术运算的类 RationalNumber。分数的分子和分母作为该类的私有数据成员,用整型数表示,要求通过构造函数的参数带有默认值的方式为该类对象进行初始化,并且要求对所有分数都应以最简形式数据(如 2/4 在对象中的数据应该为分子为 1、分母为 2 的形式),要求公有成员函数能够完成如下的功能:(1)(2)(3)(4)(5)(6)两个有理数相加,以最简形式保存计算结果;两个有理数相减,以最简形式保存计算结果;两个有理数相乘
20、,以最简形式保存计算结果;两个有理数相除,以最简形式保存计算结果;以 a/b 的形式输出有理数;以浮点形式输出有理数。编写程序进程序如下:试。#include using namespatd;(a,b) t;while (b != 0) t = b;b = a % b; a = t;return a;class Rational private:numerator, denominator;public:Rational(double n = 0, double d = 1) SetNumber(n, d);void SetNumber(double n, double d) c =(n, d
21、);numerator = n / c;denominator = d / c;sic Rational Add(Rational c1, Rational c2) a = c1.numerator;b = c1.denominator; c = c2.numerator;d = c2.denominator; num = a * d + c * b; denom = b * d;return Rational(num, denom);sic Rational Sub(Rational c1, Rational c2) a = c1.numerator;b = c1.denominator; c = c2.numerator;d = c2.denominator; num = a * d - c * b; denom = b * d;return Rational(num, denom);sic Rational Mult(Rational c1, Rational c2) a = c1.numerator;b = c1.denominator; c = c2.numerator;d = c2.de
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- CPSM考试知识结构的梳理与应用试题及答案
- 2024年图书管理教育培训试题及答案
- 个人财务管理中的情绪控制计划
- 深化行业风险评估的工作总结计划
- 进口商品行业保安工作总结计划
- 夏季瘦身秘诀低脂低糖饮食搭配
- 2025年发动机基本件:飞轮合作协议书
- 课堂氛围营造与激励机制计划
- 大学生体测成绩与学业成绩的关联性分析
- 团队合规意识与培训计划
- 新人教版七年级数学下第一二单元检测试题
- 化工热力学答案-冯新-宣爱国-课后总习题答案详解
- 拉斐尔课件完整版
- EIM Book 1 Unit 8 We're going on holiday单元知识要点
- 机加工日语词汇
- 核舟记测模拟试题及答案
- MySQL中文参考手册MySQL学习教程
- 集群企业住所托管服务协议书
- YS/T 1028.3-2015磷酸铁锂化学分析方法第3部分:磷量的测定磷钼酸喹啉称量法
- GB/T 39305-2020再生水水质氟、氯、亚硝酸根、硝酸根、硫酸根的测定离子色谱法
- GB/T 26159-2010中国未成年人手部尺寸分型
评论
0/150
提交评论