《C++语言基础》实践项目——初识对象
来源:互联网 发布:java调用接口传递参数 编辑:程序博客网 时间:2024/05/21 17:54
返回:贺老师课程教学链接
【项目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小时
(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函数,用来测试你编写的类。
[参考解答]
2 0
- 《C++语言基础》实践项目——初识对象
- 《C++语言基础》实践项目——和对象找感觉
- 《C++语言基础》程序阅读——初识对象
- 《C++语言基础》实践项目——指针、const、static
- 《C++语言基础》实践项目——继承与派生
- 《C++语言基础》实践项目——多重继承
- 《C++语言基础》实践项目——链表类及其应用
- 《C++语言基础》实践项目——文本文件及应用
- 《C语言及程序设计》实践项目——使用变量
- 《C语言及程序设计》实践项目——字符数据类型
- 《C语言及程序设计》实践项目——输出小星星
- 《C语言及程序设计》实践项目——迭代法解题
- 《C语言及程序设计》实践项目——循环嵌套
- 《C语言及程序设计》实践项目——数字游戏
- 《C语言及程序设计》实践项目——函数起步
- 《C语言及程序设计》实践项目——函数应用
- 《C语言及程序设计》实践项目——发现Bug
- 《C语言及程序设计》实践项目——二维数组
- FFmpeg源代码简单分析:avformat_write_header()
- retain/strong /assign/weak/copy 有什么区别
- Sysstick定时中断实现按键消抖
- NYOJ-1058(搜索)-题目----------------------------- 部分和问题
- Linux网络编程 五种I/O 模式及select、epoll方法的理解
- 《C++语言基础》实践项目——初识对象
- EditText自动换行的问题
- Android几个常用的基本样式
- SQL2008 高效分页分法
- 为了人类的未来,请赋予机器人智慧和情感!
- 线性表的各种操作实现
- 自动释放池
- POJ 3484 - Showstopper(二分搜索)
- java网络编程基础夯实01-Internet地址概述