Unit--problem3 穿越时间表
2014-03-12 19:14
302 查看
/*Univercity:烟台大学 *@Class</A>计134~4 *@Author:薛富磊 *@Time:2013-12-11 *@Function:add_a_sec() //增加1秒钟 add_a_minute() //增加1分钟 add_an_hour() //增加1小时 add_seconds(int) //增加n秒钟 add_minutes(int) //增加n分钟 add_hours(int) //增加n小时 *@Args:(1)要考虑增加后超出取值范围的情形; (2)增加n秒后,秒数可能会超过60,调整秒数, 并可以调用增加分钟数的成员函数,使时间合法; 同理,增加分钟数也有类似问题。 *@Return: */ #include <iostream> using namespace std; class Time { public: void set_time(); void show_time(); void add_a_sec(); void add_a_minute(); void add_a_hours(); void add_seconds(int); void add_minutes(int); void add_hours(int); 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; } void Time::add_a_sec() { sec=sec+1; if(sec>=60) { sec=sec-60; add_a_minute(); } show_time( ); } void Time::add_a_minute() { minute=minute+1; if(minute>=60) { minute=minute-60; add_a_hours(); } show_time( ); } void Time::add_a_hours() { hour=hour+1; if(hour>=24) { hour=hour-24; show_time( ); } show_time( ); } void Time::add_seconds(int n) { int a; sec=sec+n; if(sec>=60) { a=sec/60; sec=sec%60; add_minutes(a); } show_time( ); } void Time::add_minutes(int n) { int a; minute=minute+n; if(minute>=60) { a=minute/60; minute=minute%60; add_hours(a); } show_time( ); } void Time::add_hours(int n) { hour=hour+n; if(hour>=24) { hour=hour-24; show_time( ); } show_time( ); } int main( ) { int s,m,h; Time t1; t1.set_time( ); t1.show_time( ); cout<<"0:增加1秒;\n"; t1.add_a_sec(); cout<<"1:增加1分钟;\n"; t1.add_a_minute(); cout<<"2:增加1小时;\n"; t1.add_a_hours(); cout<<"3:增加n秒;\n"; cin>>s; t1.add_seconds(s); cout<<"4:增加n分钟;\n"; cin>>m; t1.add_minutes(m); cout<<"5:增加n小时;\n"; cin>>h; t1.add_hours(h); return 0; }
心得体会:
执行“:” “:”
两个冒号是不同的
因此会出现死循环的亲!!!
相关文章推荐
- Unit8-problem-分数(补写)
- Unit3--problem2神算子—造价师
- FZU Problem 1076 穿越沙漠 (很有意思的数学题)
- weblog.java.net: The Problem with Unit Testing
- Unit9_problem1-复数大排练
- Unit8_problem1_复数类中的运算符重载
- Unit6--problem1.1--悦
- Unit9-problem2 时间类
- Unit4--problem1_三角膜面
- Unit6--problem1.2--悦
- Unit14_problem1.1-动物怎么叫
- Unit--problem1.3--悦
- Unit8-problem1_友元类重载
- Unit14-problem1.2-动物怎么叫
- USACO - 2.4.2 穿越栅栏(改编) 重庆一中高2018级竞赛班第二次测试 2016.7.13 Problem 3
- Unit_problem1.2默认你
- Unit6--problem2-点对点
- Unit14-problem1.3-动物怎么叫
- Unit5_problem1.3多输出默认你