课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565
看完书再做发现很简单,只是自己一开始就产生了畏惧心理。——一位正在进步的同学这样总结
这句话让我很有感触。这就是成长,这句话是留给有心人自己说出来的。——迂者感到很欣慰
【项目1】设计三角形类,通过增加构造函数,使对象在定义时能够进行初始化
#include<iostream> using namespace std; class Triangle {public: double perimeter(void);//计算三角形的周长 double area(void);//计算并返回三角形的面积 void showMessage(); private: double a,b,c; //三边为私有成员数据 }; void Triangle:: showMessage() { cout<<”三角形的三边长分别为:”<<a<<'\t'<<<<b<<<<'\t'<<<<c<<endl; cout<<"该三角形的周长为:"<< perimeter()<<'\t'<<"面积为:"<< area()<<endl<<endl; } void main(void) { Triangle Tri1; //定义三角形类的一个实例(对象),要求执行一个默认构造函数,三边初值均为1 Tri1.showMessage(); Triangle Tri2(7,8,9); //定义三角形类的一个实例(对象) Tri2.showMessage(); }
特别要求:为全面体会构造函数的各种写法,本任务要求提交多个版本的程序,体现出你已经掌握下列知识点(带参数构造函数、默认构造函数、有默认参数的构造函数、参数初始化表,先将这些个概念看书了解了。):
(1)使用带参数构造函数,即Triangle(double x, double y, double z),三边长在调用时由实参直接给出;
(2)设计默认构造函数,即不指定参数时,默认各边长为1;
(3)使用有默认参数的构造函数,不给定实参时,默认边长为1;
(4)在构造函数中使用参数初始化表对数据成员初始化。
【项目1拓展(选做)】请自行设计一个矩形类,可以计算矩形的面积、周长、对角线,判断是否是正方形。请用上类似的构造函数,自己设计main()函数,对设计的类进行测试。
【项目2】C++中提供了多种基本的数据类型。实际上,这些远不能满足我们的需求,如复数(第10章的例子大多是处理虚数的),再如分数。本任务将设计一个简单的分数类,完成对分数的几个运算。一则巩固基于对象编程的方法,二则也为第10章做运算符重载等积累些感性认识。
项目要求:完成下面类的设计,并在main()函数中自行定义对象,调用各成员函数,完成基本的测试。
class CFraction {private: int nume; // 分子 int deno; // 分母 public: CFraction(int nu=0,int de=1); //构造函数,初始化用 void set(int nu=0,int de=1); //置值,改变值时用 void input(); //按照"nu/de"的格式,如"5/2"的形式输入 void simplify(); //化简(使分子分母没有公因子) void amplify(int n); //放大n倍,如2/3放大5倍为10/3 void output(int style=0); //输出:以8/6为例,style为0时,原样输出8/6; //style为1时,输出化简后形式4/3; //style为2时,输出1(1/3)形式,表示一又三分之一; //style为3时,用小数形式输出,如1.3333; //不给出参数和非1、2,认为是方式0 };
【项止2拓展1(选做)】上面output(int style=0)中的输出方式style的类型最适合使用自定义的枚举类(见第7章)了,试着改造一下。
【项目2拓展2(思考)】这个思考题吊一下大家的胃口:设定义了两个分数类的对象,如CFraction c1, c2。如果定义了int i,我们能用cin>>i>>j;在键盘上输入i和j的值,是否期望用cin>>c1>>c2;输入分数呢?同理,用cout<<c1<<c2;进行输出,可以吗?进一步,用c1+c2得到新的一个分数,用c1/c2实现两个分数的除法,以及其他加、减、比较、求倒数等也是理所当然的。实际上,要自定义分数类,这些直观的基本运算应该要实现,这叫运算符的重载。本任务中用amplify()给出了“放大”运算的一种实现方案,更多内容值得期待地。
【项目3】编写基于对象的程序,求5个长方柱的体积和表面积。长方柱类Bulk的数据成员包括长(length)、宽(width)、高(heigth)等。另外:
(1)需要定义长方柱类,5个长方柱采用一个对象数组表示;
(2)定义相应的构造函数以支持如下main()函数中的初始化,其中前3个直接给出参数初始化(未给出的参数默认为1.0),第4个对象b[3]用默认构造函数初始化;第5个长方柱定义时不初始化,而是由键盘输入长、宽、高赋值;
(3)输出这5个长方柱的体积和表面积;
int main() { Bulk b[5]={Bulk(2.3,4.5,6.7),Bulk(1.5,3.4),Bulk(10.5)}; b[4].get_value(); //下面分别输出这5个长方柱的体积和表面积 }
【项目4】设计一个学生类Student,包括学号(num)和成绩(score)。建立一个对象数组,通过初始化,设置5个学生的数据,要求:
(1)用指针指向数组首元素,输出第1、3、5个学生的信息;
(2)设计一个函数int max(Student *arr);,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并返回值其学号。