返回:贺老师课程教学链接
【项目1 - 旱冰场造价】
有一个圆形的旱冰场地,场地内抹水泥,造价为每平方米M元,围栏用木条围成,每米造价N元,输入旱冰场半径,用程序计算出其造价。
一级提示:
先定义类,确定其数据成员和成员函数。在这里要定义的旱冰场类,实际我们只关心其面积和周长,根据面积计算场地内抹水泥的造价,根据周长计算围栏的造价。有了类的定义,在main函数中定义该类对象,调用成员函数即可以完成求解。
二级提示:
实际上,对于旱冰场,我们只关心它就是一个圆。这就是设计中抓住了本质。于是,设计一个Circle(圆)类,数据成员为圆的半径,Circle类还提供计算圆的面积和边长的成员函数。在main函数中,定义一个Circle类的对象,调用成员函数求出旱冰场的造价。
三级提示:
请在下面提示的基础上完成程序,其中需要做的工作包括:(1)在类声明中声明相关的公共成员函数;(2)在类声明和main()函数之间,定义声明的成员函数。
const int M=20; //水泥场地每平米造价 const int N=35; //围栏每米造价 class Circle { //下面声明需要的成员函数(从已经提供的main函数中可以找出需要哪些成员函数) private: double radius; }; //下面定义需要的成员函数 int main() { double r; cout<<"请输入旱冰场的半径: "; cin>>r; Circle c; c.setRadius(r); cout<<"旱冰场的造价为 "<<M*c.area()+N*c.circumference()<<" 元。"<<endl; return 0; }
[参考解答]
【项目2 - 长方柱类】
编写基于对象的程序,求3个长方柱(Bulk)的体积。数据成员包括长(length)、宽(width)、高(heigth)、体积,要求设计成员函数实现下面的功能:
(1)由键盘输入3个长方柱的长、宽、高;
(2)计算长方柱的体积(volume)和表面积(areas);
(3)输出这3个长方柱的体积和表面积;
[参考解答]
【项目3 - 时间类】阅读、运行程序后,按要求扩充类的功能
#include <iostream> using namespace std; class Time { public: void set_time( ); void show_time( ); private: bool is_time(int, int, int); //这个成员函数设置为私有的,是合适的,请品味 int hour; int minute; int sec; }; void Time::set_time( ) { char c1,c2; cout<<"请输入时间(格式hh:mm:ss)"; while(1) { cin>>hour>>c1>>minute>>c2>>sec; if(c1!=':'||c2!=':') cout<<"格式不正确,请重新输入"<<endl; else if (!is_time(hour,minute,sec)) cout<<"时间非法,请重新输入"<<endl; else break; } } void Time::show_time( ) { cout<<hour<<":"<<minute<<":"<<sec<<endl; } bool Time::is_time(int h,int m, int s) { if (h<0 ||h>24 || m<0 ||m>60 || s<0 ||s>60) return false; return true; } int main( ) { Time t1; t1.set_time( ); T1.show_time( ); return 0; }
要求:
(1)请在原类基础上,在类内增加下列成员函数(将是内置成员函数)
- add_a_sec() //增加1秒钟
- add_a_minute() //增加1分钟
- add_an_hour() //增加1小时
在main()数中,调用新增加的成员函数,以测试扩充后的功能。
(2)再增加三个成员函数,要求在类内声明,类外定义。
- add_seconds(int) //增加n秒钟
- add_minutes(int) //增加n分钟
- add_hours(int) //增加n小时
提示:
- 要考虑增加后超出取值范围的情形;
- 增加n秒后,秒数可能会超过60,调整秒数,并可以调用增加分钟数的成员函数,使时间合法;同理,增加分钟数也有类似问题。
[参考解答]
【项目4 - 图书馆的书】
编写一个Book类,包含name(书名)、writer(著者)、public_name(出版社)、price(价格)、number(数量)、NO(书号)等数据成员。定义成员函数setBook,用来为书籍的数据成员赋值,定义成员函数borrow和restore,分别办理借出和还回(借、还书时,暂时只完成数量的增1减1,这里的书仍是一种书的概念,随着课程进展,我们继续做真正的图书管理系统,每本书都能追踪到是谁何时借了,何时还了)业务,定义成员函数print用于输出—有关书的信息,定义set_NO与get_NO来实现修改类对象的书号与获得类对象的书号。自己写main函数,用来测试你编写的类。
[参考解答]