5.
#include
public: S()
{ PC=0; } S(S &s) {
PC=s.PC;
for(int i=0;i void Empty() { PC=0; } int IsEmpty() { return PC==0; } int IsMemberOf(int n); int Add(int n); void Print(); private: int elems[100],PC; }; int S::IsMemberOf(int n) { for(int i=0;i int S::Add(int n) { if(IsMemberOf(n)) return 1; else if(PC==100) return 0; else { elems[PC++]=n; return 1; } } void S::Print() { cout<<'{'; for(int i=0;i cout< void main() { S a; cout< 6 a.Print(); S b; for(int i=1;i<=5;i++) b.Add(i); b.Print(); cout< c.Print(); } 答: 1 {} {1,2,3,4,5} 1 0 {1,2,3,4,5,6,7,8,9,10} 6.5 编程题 1.按下列要求编程: (1)定义一个描述矩形的类Rectangle,包括的数据成员有宽(width)和长(length); (2)计算矩形周长; (3)计算矩形面积; (4)改变矩形大小。 通过实例验证其正确性。 答:编程如下: #include public: Rectangle(int a,int b) { width=a; length=b; } int Area() { return width*length; } int Periment() { return 2*(width+length); } void Changesize(int a,int b) { width=a; length=b; } void Print(); private: int width,length; }; void Rectangle::Print() { cout<<\ cout<<\ } void main() { 7 Rectangle r(5,8); r.Print(); r.Changesize(3,9); r.Print(); } 2. 编程实现一个简单的计算器。要求从键盘上输入两个浮点数,计算出它们的加、减、 乘、除运算的结果。 答:编程如下: #include public: ASMD(double a,double b) { x=a; y=b; } void Addition() { cout< { cout< { cout< { cout< double x,y; }; void ASMD::Print() { Addition(); Subtration(); Multiply(); Divison(); } void main() { ASMD a(40,8); a.Print(); } 3.编一个关于求多个某门功课总分和平均分的程序。具体要求如下: (1)每个学生信息包括姓名和某门功课成绩。 (2)假设5个学生。 (3)使用静态成员计算5个学生的总成绩和平均分。 答:编程如下: #include 8 #include public: Student(char s[],int gr) { strcpy(name,s); grade=gr; totalize+=gr; } static void Print(); private: char name[10]; int grade; static int totalize; }; int Student::totalize=0; void Student::Print() { cout<<\总成绩为 \平均成绩为 \ } void main() { Student s1(\ Student::Print(); } 6.6 简单回答下列问题 1. 一个类中是否必须有用户定义的构造函数?如果用户没有定义构造函数,又如何对 创建的对象初始化? 答:一个类用户可以不定义构造函数,这时系统自动提供一个默认的构造函数,并可用该构造函数对创建的对象初始化。 2. 拷贝构造函数具有几个参数?它有类型转换的作用吗? 答:拷贝构造函数具有一个参数,即为该类对象的引用。拷贝构造函数没有类型转换作用。 3. 静态成员属于类的,是否每个对象都可以引用该静态成员? 答:可以。 4. 常对象可以引用非常成员函数吗?非常对象可以引用常成员函数吗? 答:不可以。可以。 5.友元函数能否访问类中的保护成员?友元函数访问类中私有成员与成员函数访问私有成员的形式相同吗? 答:能。相同。 9 第7章 类和对象(二) 练习题7 7.1 判断题 × 1.定义对象指针时也要调用构造函数。 √ 2.对象指针可用同类对象的地址值给它赋值。 × 3.对象指针成员表示与对象引用相同。 √ 4.常类型指针有两种,一种是指针的地址值是常量,另一种是指针所指向的变量或对象是常量。 × 5.指向对象的常指针的地址值是可以改变的。 × 6.指向常对象的指针所指向的对象是可以改变的。 √ 7.this指针是系统生成的指向当前被某个成员函数操作对象的指针。 × 8.对象引用可以用一个同类对象的地址值对它赋值。 × 9.定义对象引用时,可以对其引用进行初始化,也可以不进行初始化。 × 10.对象数组的元素可以是不同类的对象。 × 11.对象指针数组可以使用不同类的对象的地址值进行初始化。 × 12.给对象数组元素赋值时都要创建临时对象。 √ 13.指向一维对象数组的指针是一个二级指针。 × 14.自身类对象可作该类的子对象。 √ 15.子对象的初始化要在构造函数的成员初始化列表中进行。 √ 16.使用new运算符创建的对象称为堆对象。 √ 17.任何对象都可以使用delete运算符来释放。 × 18.使用new运算符创建的对象数组其元素都具有默认值。 √ 19.类的作用域范围指的是类体内。 × 20.对象的存储类只有外部的和静态的。 7.2 单选题 1.f1()函数是类A的公有成员函数,p是指向类的成员函数f1()的指针,下列表示中正确的是( C )。 A.p=f1() B.p=f1 C.p=A::f1 D.p=A::f1() 2.p是指向类A数据成员a的指针,a是类A的一个对象。在给a成员赋值为5的下列表达式中,正确的是( C )。 A.a.p=5 B.a->p=5 C.a.*p=5 D.*a.p=5 3.Void Set(A&a);是类A中一个成员函数的说明,其中A&a的含义是( A )。 A.类A的对象引用a作该函数的参数 B.类A的对象a的地址值作函数的参数 C.表达式变量A与变量a按位与作函数参数 D.指向类A对象指针a作函数参数 4.已知:const A a;其中A是一个类名,指向常对象指针的表示为( D )。 A.const * A pa; B.const A *pa; C.A * const pa; D.const *pa A; 5.下列关于子对象的描述中,错误的是( D )。 A.子对象不可以是自身类的对象 B.子对象是另一个类的对象 10 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C++习题与解答(2)在线全文阅读。
相关推荐: