习题及实验讲解(10-11章)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/* 习题10.13:定义一个矩形类Rect,矩形的左上角坐标(Left,Top)和右下角坐标(Right,Bottom)定义为私有数据成员,成员函数包括计算面积、计算周长、输入和输出。定义Rect类数组,计算各个矩形的面积和周长并输出。*/ /*#include

using namespace std;

class Rect{

private:

float left, top;

float right, bottom;

float length, area; //此两成员可不用

public:

void input(float le, float to, float ri, float bo) //输入函数,输入数据成员{ left=le; top=to; right=ri; bottom=bo; }

void input( ) //重载输入函数,用于数组输入

{ cout<<"Input left, top and right, bottom:";

cin>>left>>top>>right>>bottom; } //无参,直接输入数据成员的值

float getLength( ) //无参,有返回值(也可无返回值){ length=((top-bottom)+(right-left))*2;

return length;

}

void getArea( ) //无返回值

{ area=(top-bottom)*(right-left); }

void Output(); //体内声明函数

};

void Rect::Output( ) //体外定义函数

{ cout<<"(left,top)="<<'('<

cout<<"(right,bottom)="<<'('<

cout<<"Length="<

int main(void)

{ Rect rect1; //定义Rect类的对象rect1

rect1.input(2,4,4,2); //rect1的数据成员的值作为实参输入

rect1.getLength(); //数据的输入、计算和输出均通过对象的函数成员进行rect1.getArea();

rect1.Output();

Rect r[2]; //定义Rect类的对象数组

int i;

for(i=0; i<2; i++)

{ r[i].input(); //键盘输入数组元素,此时用前一种实参的输入方式就不方便r[i].getLength();

r[i].getArea();

r[i].Output();

}

return 0;

}

此题中对象数组数据的输入未采用构造函数的形式,而是采用专门的输入函数。

/* 习题10.17 设计一大小可变的整形数组类:

class CArray{

int size; //数组的元素个数

int *p; //指向为数组申请的动态内存

public:

CArray(int=100); //数组缺省大小为100个元素

~CArray(); //析构函数

int &GetElem(int i); //取或设置数组中的第i个元素

void Input(); //为数组所有元素输入数据

void Print(); //输出数组中的所有元素

void Sort() //对数组元素进行排序

int Search(int); //在数组中查找指定值

};

首先完成CArray类中成员函数的定义,然后设计主函数,定义CArray的对象,测试所定义的类CArray。*/

/*#include

using namespace std;

class CArray{

int size;

int *p;

public:

CArray(int s=3) //构造函数,默认值用3,为了调试方便

{ size=s;

p=new int[size]; //申请动态内存,注意为[]号,用()合法,编译不会出错,

但含义不同。

cout<<"构造函数被调用\n";

}

~CArray()

{ delete []p; //释放内存

cout<<"析构函数被调用\n";

}

int& GetElem(int i); //取或设置指定元素,以下均为函数声明

void Input(); //输入数组元素

void Output(); //输出数组元素

void Sort(); //数组元素排序

int Search(int); //查找给定值,见例7.5,移植类似于Sort函数,此处不再重复};

int& CArray::GetElem(int i)

{ return *(p+i); } //返回值类型为整形引用,返回值为指针所指的整形元素

void CArray::Input()

{ cout<<"输入数组元素:\n";

for (int j=0; j>p[j]; //*p++不行,p会改变,影响后面p的

使用及删除

}

void CArray::Output()

{ for (int j=0; j

void CArray:: Sort() //冒泡排序

{ float t;

for(int i=1; i

for(int j=0; j

if(p[j]>p[j+1]) //相邻比较,若逆序则交换

{ t=p[j]; p[j]=p[j+1]; p[j+1]=t; }

相关文档
最新文档