第六周项目4—静态成员应用
2016-04-13 13:06
246 查看
*All rightreserved.
*文件名称:test.cpp
*作 者:张明宇
*完成日期:2016年4月10日
*/
问题及代码:
设计含有静态数据成员和成员函数的Time类。静态数据成员是类中所有的对象共有的数据,在下面的设计中,时钟要采用12小时制,还是要使用24小时制,显示时,不足两位数字前是否前导0,都是“影响全局”的设置,适合作为类中的静态数据成员。
#include <iostream>
using namespace std;
class Time{
public:
Time(int=0,int=0,int=0);
void show_time( ); //根据is_24和from0,输出适合形式-20:23:5/8:23:5 pm/08:23:05 pm
void add_seconds(int); //增加n秒钟
void add_minutes(int); //增加n分钟
void add_hours(int); //增加n小时
static void change24(); //改变静态成员is_24,在12和24时制之间转换
static void changefrom0(); //改变静态成员from0,切换是否前导0
private:
static bool is_24; //为true时,24小时制,如20:23:5;为flase,12小时制,显示为8:23:5 pm
static bool from0; //为true时,前导0,8:23:5显示为08:23:05
int hour;
int minute;
int sec;
};
*文件名称:test.cpp
*作 者:张明宇
*完成日期:2016年4月10日
*/
问题及代码:
设计含有静态数据成员和成员函数的Time类。静态数据成员是类中所有的对象共有的数据,在下面的设计中,时钟要采用12小时制,还是要使用24小时制,显示时,不足两位数字前是否前导0,都是“影响全局”的设置,适合作为类中的静态数据成员。
#include <iostream>
using namespace std;
class Time{
public:
Time(int=0,int=0,int=0);
void show_time( ); //根据is_24和from0,输出适合形式-20:23:5/8:23:5 pm/08:23:05 pm
void add_seconds(int); //增加n秒钟
void add_minutes(int); //增加n分钟
void add_hours(int); //增加n小时
static void change24(); //改变静态成员is_24,在12和24时制之间转换
static void changefrom0(); //改变静态成员from0,切换是否前导0
private:
static bool is_24; //为true时,24小时制,如20:23:5;为flase,12小时制,显示为8:23:5 pm
static bool from0; //为true时,前导0,8:23:5显示为08:23:05
int hour;
int minute;
int sec;
};
//下面写出静态数据成员的初始化及个成员函数的定义......
#include <iostream> using namespace std; class Time{ public: Time(int=0,int=0,int=0); void show_time( ); //根据is_24和from0,输出适合形式-20:23:5/8:23:5 pm/08:23:05 pm void add_seconds(int); //增加n秒钟 void add_minutes(int); //增加n分钟 void add_hours(int); //增加n小时 static void change24(); //改变静态成员is_24,在12和24时制之间转换 static void changefrom0(); //改变静态成员from0,切换是否前导0 private: static bool is_24; //为true时,24小时制,如20:23:5;为flase,12小时制,显示为8:23:5 pm static bool from0; //为true时,前导0,8:23:5显示为08:23:05 int hour; int minute; int sec; }; Time::Time(int h,int m,int s):hour (h),minute (m),sec (s){}; bool Time::is_24=true; bool Time::from0=false; void Time::show_time( ) { int h; if(is_24) h=hour; else h=hour%12; if(hour<10&&from0) cout<<"0"; cout<<h<<":"; if(minute<10&&from0) cout<<"0"; cout<<minute<<":"; if(sec<10&&from0) cout<<"0"; cout<<sec; if(!is_24) if (hour>12) cout<<" pm"; else cout<<" am"; cout<<endl; } void Time::add_seconds(int x) { sec+=x; if(sec>=60) { add_minutes(sec/60); sec=sec%60; } } void Time::add_minutes(int x) { minute+=x; if(minute>=60) { add_hours(minute/60); minute=minute%60; } } void Time::add_hours(int x) { hour+=x; if(hour>=24) { hour=hour%24; } } void Time::change24() { is_24=!is_24; } void Time::changefrom0() { from0=!from0; } //下面写出静态成员的初始化及各成员函数的定义…… int main( ) { Time t1(23,20,50),t2(15,2,5); cout<<"时间1 23点20分50秒"<<endl; cout<<"时间2 15点2分5秒"<<endl; cout<<"时间1,24小时制 不前导0"<<endl; t1.show_time( ); cout<<"时间2,24小时制 不前导0"<<endl; t2.show_time( ); cout<<"时间2,12小时制 前导0"<<endl; t2.change24(); t2.changefrom0(); t2.show_time( ); cout<<"时间1,12小时制 不前导0"<<endl; t1.change24(); t1.show_time( ); cout<<"增加20秒 输出时间1 "<<endl; t1.add_seconds(20); t1.show_time( ); cout<<"增加20分 输出时间1"<<endl; t1.add_minutes(20); t1.show_time( ); cout<<"增加10小时 输出时间1"<<endl; t1.add_hours(10); t1.show_time( ); return 0; }
相关文章推荐
- POJ 1703 Find them, Catch them【带权并查集】
- Android 中View类DrawingCache的使用
- 安卓面试基本考点
- 调用摄像头拍照和从相册中选择照片
- Spring MultipartResolver 和ServletFileUpload 冲突导致获取不到上传文件的url
- 两个人结对开发合作
- [Java] 通过文件流拷贝文件
- POJ 3080 Blue jeanes
- CEidt中导入bmp作为背景图
- 什么是机器学习,一文让你了解机器学习的历史和真谛
- Access_token的存储
- 最小编辑代价
- android事件关系分析图解
- 动态库转静态库遇到的问题
- 怎样获取别的程序图标句柄
- leetcode- RemoveDuplicatesfromSortedArray
- http/tcp/socket 区别
- 工作心情
- .net 操作注册表
- 2014.4新版uboot启动流程分析