第3章-类和对象习题-参考答案.doc
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第3章类与对象习题参考答案
一、选择题(共30分,每题1分)
12345678910 c B C D D B D A D C 11121314151617181920 A C B A A D B C C D 21222324252627282930 C D B B A D B B A A
二、填空题(共18分,每题1分)
1.不能
2.将对象A复制给对象B
3.(1) public (2)成员函数
4.实例
5.复制(拷贝)
6.类(test ) 〜test。
7.对象类
8.重载返回值参数
9.默认(无参)
10.->
11.构造函数
12.函数返回类型类名::成员函数名(参数表);
13.常对象
14.对象名
15.析构函数
三、改错题(共12分,每题2分)
1.void Point(int a) ------------ Point(int a)
cout«A.Show(); ------------ A.Show();
2.答案:inti,intj ------------- int i, intj=O 〃注:只要有一个int类型的数据就行。
分析:调用时,既有一个参数,也有两个参数,旦没有重载,所以参数需要带默认值。
3.答案:swap(&a,&b); ----------- s wap(a? b);
分析函数的形参是变量的引用,调用时的实参应该是地址。
4.#include<iostream.h>
class one
{ int al,a2;
public:
one(int xl=O, int x2=0) 〃修改1:构造函数的函数体没有(al=xl;a2=x2;)
show() 〃修改2定义成员函数
(cout«al«endl;
cout«a2«endl;
)
};
void main()
{ one data(2,3);
data.show(); 〃修改3:用对象调用成员函数
}
5.ABC(int aa)a(aa)(} --------- ABC(int aa): a(aa)()
分析:构造函数的初始化列表格式错误。
6. --------------------------------------------------- 答案:cout«tl.getmin()«endl; cout«tl.GetMin()«endl; 分析:采用默认的访问权限即私有的,在外部无法访问。
四、看程序写结果(共15分,每题3分)
1.
输出:
Constructing normally
Constructing with a number: 59
Display a number: 0
Display a number: 59
Destructing
Destructing
2.s=150
3.62
[解析]x是普通对象,调用普通的print函数;而y常对象,调用常成员函数。
4.答案:108
[解析]p 指向对象x2, x2.getA()+5 该值为8 即x2.a=8;10+xl.getA()为10, xl.a = 10o
5.38
五、编程题(共25分)
1.某商店经销一种货物,货物成箱购进,成箱卖出,购进和卖出时以重量为单位,各箱的重量不一
样,因此,商店需要记下目前库存货物的总量,要求把商店货物购进和卖出的情况模拟出来。
#include<iostream>
using namespace std;
class Goods
(
double weight;
static double totalweight;
public:
Goods(double w)
(
weight=w;
totalweight+=weight;
}
~Goods(){
totalweight-=weight;
)
static double getTotalWeight())
retum totalweight;
}
};
double Goods::totalweight=0;
void main()
(
Goods *gl,*g2;
gl=new Goods(lO.O); 〃买进货物,增加总重量
g2=new Goods(20.0);
cout«n总重量M«Goods::getTotalWeight()«endl;
delete gl;
cout«"卖掉一个以后的总重量n«Goods::getTotalWeight()«endl;
delete g2;
coutvv"再卖掉一个后的总重量"«Goods::getTotalWeight()«endl;
}
2.声明一个长方形Box,该类有长(length)^宽(width)、高(height)三个数据成员,类中有获取及修改、宽、高的函数,以及计算长方形表面积和体积的函数,声明默认的构造函数和带有3个参数的构造函数。
在main函数中进行测试。
#include <iostream> 〃包含头文件命令
using namespace std; 〃使用名字空间std
class Box
{public:
Box()( length=l; width=l; height=l; } 〃默认构造函数Box(int length, int width, int height): length(length), width(width), height(height)(}
〃默认构造函数〃普通构造函数 〃获取学生学号 〃获取学生姓名 〃获取学生成绩 //修改学生学号)〃修改学生姓名 〃显示学生信息
〃普通构造函数
int GetLength()( return length; } 〃获取长方体的长度 int GetWidth() ( return width; } 〃获取长方体的宽度 int GetHeight()( return height; }
〃获取长方体的高度
void SetLength(int length)( this->length = length; } 〃修改长方体的长度 void SetWidth(int width){ this->width = width; } 〃修改长方体的宽度 void SetHeight(int height)( this->height = height; } //修改长方体的高度 int GetAreaO
〃计算长方体的表面积
( return 2*(length * width + length * height + width * height); ) int GetVblume()( return length * width * height;) 〃计算长方体的体积 private:
int length, width, height;
//长方体的长、宽、高
};
int main() {
Box boxl,box2(2,l,3); box l.SetLength(5); boxl.SetWidth(3); boxl.SetHeight(4); cout«"The area of box 1 is: M « box 1 .GetArea()«endl; cout«"The volume of box 1 is: "« box 1 .GetVblume()«endl; cout«"The area of box2 is: M « box2.GetArea()«endl;
cout«n
The volume of box2 is: "« box2.GetVolume()«endl; return 0; 1
3.
创建一个对象数组,数组的元素是学生对象,学生的信息包括学号、姓
名和成绩,在main 函数中将数组中所有成绩大于80分的学生的信息显示出来。
(设有5位学生,进行数据测试)。
程序代码如下: #include <iostream> 〃包含头文件命令
using namespace std; 〃使用名字空间 std
#include <string> class Student {public:
Student()( sno='H,; name=""; score=0; } Student(string
sno, string name, int score) :sno(sno), name(name),
score(score)(} string GetSno()( return sno; } string GetName()( return name; } int GetScore()( return score; } void SetSno(string sno)( this->sno = sno; } void SetName(string name)( this->name = name; void SetScore(int score){ this->score = score; }〃修改学生成绩
void Show() ( cout«n Sno is: H «sno«endl; cout«n Name is: n «name«endl; cout«n
Score is: H «score«endl«endl;
}
private:
string sno; 〃学号
string name; 〃姓名
int score; 〃成绩
};
int main()
(
Student student[5] = (Student(" 1001", "ZhangSan", 75),
Student(”1002”,”LiSi”,81), Student(”10()3”,"WangWu”,90),
Student(”1004”,“ZhaoLiu”,71),
Student。
'1005”, “HouQi”,88) };
for(int i = 0; i < 5; i++)
if(student[i].GetScore()>80) student[i].Show();
return 0;。