习题及实验讲解(10-11章)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 使用及删除 } 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; }