第一周 项目三:时间类
来源:互联网 发布:pbft 共识算法 编辑:程序博客网 时间:2024/05/16 16:19
问题及代码:
/** Copyright (c++) 2015, 烟台大学计算机学院* All rights reserved.* 文件名称:Bank.cpp* 作 者:李楠* 完成日期:2015年3月14日* 版 本 号:v1.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,调整秒数,并可以调用增加分钟数的成员函数,使时间合法;同理,增加分钟数也有类似问题。* 程序输出: 略*/#include <iostream>using namespace std;class Time{public: void set_time( ); void show_time( ); void add_a_sec( ); //增加1秒钟 void add_a_minute( ); //增加1分钟 void add_an_hour( ); //增加1小时 void add_seconds(int); //增加n秒钟 void add_minutes(int); //增加n分钟 void add_hours(int); //增加n小时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;}inline void Time::add_a_sec( )//内置函数!!增加一秒{ sec=sec+1; if(sec>59) { sec=0;//秒数清零 add_a_minute();//分钟数增加1,由增加一分钟的函数解决!! }}inline void Time::add_a_minute( )//内置函数!!增加一分钟{ minute=minute+1; if(minute>59) { minute=0;//分钟数清零 add_an_hour(); }}inline void Time::add_an_hour( )//内置函数!!增加一小时{ hour=hour+1; if(hour>23) hour=0;//如果超过23,就到了第二天,小时数清零}void Time::add_seconds(int s){ sec+=s; if(sec>59) { add_minutes(sec/60);//增加了sec/60秒后 sec%=60;//秒数(这一步要在后面!!)因为如果在前面sec就改变了 }}void Time::add_minutes(int m){ minute+=m; if(minute>59) { add_hours(minute/60); minute%=60; }}void Time::add_hours(int h){ hour+=h; if(hour>23) hour=hour%24;}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( ){ int a,b,c; Time t2; //Time &t2=t1;//引用!! t2.set_time( ); cout<<"现在时间是:"; t2.show_time( ); t2.add_a_sec(); cout<<"增加一秒:"; t2.show_time(); t2.add_a_minute(); cout<<"增加一分钟 :"; t2.show_time(); t2.add_an_hour(); cout<<"增加一小时 :"; t2.show_time(); cout<<"增加的秒数:"; cin>>a; t2.add_seconds(a); cout<<"增加之后变为:"; t2.show_time(); cout<<"增加的分钟数:"; cin>>b; t2.add_minutes(b); cout<<"增加之后变为:"; t2.show_time(); cout<<"增加的小时数:"; cin>>c; t2.add_hours(c); cout<<"增加之后变为:"; t2.show_time(); return 0;}
运行结果:
知识点总结:
就是根据提示和要求,要考虑到时间超限的后果,还要注意程序的注释中的内容,还是很容易出错的。
学习心得:
某个地方不仔细就有可能导致错误,在写程序前要有一个清晰的思路和大体的框架,在思路比较混乱的地方,最好还是写下来再敲代码。
0 0
- 第一周 项目三:时间类
- 第一周项目三 时间类
- 第一周 项目三时间类(增加n秒)
- 第一周项目三——时间类(改进)
- 第一周项目三
- 第一周项目三
- 第一周项目三
- 第一周项目三——时间类(增加时间)
- 第一周 项目3 时间类
- 第一周项目3 时间类
- 第一周项目3:时间类
- 第一周项目 3 时间类
- 第十一周项目三日期时间类
- 第一周项目三(1):时间类(秒,分,时各加一)
- 第一周项目三(2):时间类(秒,分,时各加n)
- 第一周项目三——时间类(原题)
- 第一周项目三 时间类(1)增加一秒
- 第一周项目三 时间类(2)增加多秒/分/时
- Sicily 1943. Far far away
- 字符串替换
- IPSecVPN和OpenVPN-IPSec平反
- Socket编程实践(5) --TCP粘包问题与解决
- 病毒侵袭
- 第一周 项目三:时间类
- Sicily 1684. Christmas
- 条款36、绝不重新定义继承而来的非虚函数
- Keywords Search
- 分割线
- ARM工控核心板在免疫荧光检测仪中的应用
- [POJ 3207]Ikki's Story IV - Panda's Trick(2-SAT入门题)
- 福利,北风网学习卡免费赠送
- 一些常见的排序算法(php语言)