阅读、运行程序后,按要求扩充类的功能。
#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,调整秒数,并可以调用增加分钟数的成员函数,使时间合法;同理,增加分钟数也有类似问题。
我的解答:
/* Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作者:陈丹妮 * 完成日期:2015年 3 月 18 日 * 版 本 号:v1.0 */ #include <iostream> using namespace std; class Time { public: void set_time(); void show_time(); void add_a_hours(int); void add_a_minutes(int); void add_a_seconds(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_seconds(int s) { int n; sec+=s; if(sec>60) { n=sec/60; sec%=60; Time::add_a_minutes(n); } } void Time::add_a_minutes(int m) { int n; minute+=m; if(minute>60) { n=minute/60; minute=minute%60; Time::add_a_hours(n); } } void Time::add_a_hours(int h) { hour+=h; if(hour>24) { hour%=24; } } int main() { int tSecond,tMinute,tHour; Time t1; t1.set_time(); t1.show_time(); cout<<"调整时间,输入增加的量ss,mm,hh"<<endl; cin>>tSecond>>tMinute>>tHour; t1.add_a_seconds(tSecond); t1.add_a_minutes(tMinute); t1.add_a_hours(tHour); t1.show_time(); return 0; }
心得体会:要熟悉如何定义函数,以及形参传递给实参的值。还是要对以前的知识很熟悉的掌握。
时间: 2024-08-28 00:15:57