c++第3次上机实验
2016-04-11 22:59
363 查看
一、问题及代码:
二、运行结果:
三、心得体会:使用静态函数可以保证时间的初始值不变,静态成员只能在静态函数中被引用。
四、知识点总结:show_time函数中要先判断时间是什么制式,再输出,运用is_24=true和from0改变时间的制式的决定是否加前导。
/* * 文件名称:1 * 作 者:刘璇 * 完成日期:2016年4月11日 * 版 本 号:v1.0 * 对任务及求解方法的描述部分: 设计含静态函数和成员函数的Time类程序,程序中包含了对12小时、24小时的转换,及时间的增减。 * 输入描述:输入两个时间值。 * 问题描述:要求对时间进行增减,并进行12小时和24小时的转换。 * 程序输出:输出两个时间的初始值,增加10小时后的值,进行转换后的值。 * 问题分析:略 * 算法设计:略 */ #include<iostream> #include<string> 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; }; bool Time::is_24=true; bool Time::from0=false; Time::Time(int h,int m,int s) { hour=h; minute=m; sec=s; } void Time::show_time( ) { if(is_24&&!from0) cout<<hour<<":"<<minute<<":"<<sec<<endl; else if(is_24&&from0) { if(hour<10) cout<<"0"; cout<<hour<<":"; if(minute<10) cout<<"0"; cout<<minute<<":"; if(sec<10) cout<<"0"; cout<<sec<<endl; } else if(!is_24&&!from0) { cout<<hour%12<<":"<<minute<<":"<<sec; if(hour/12) cout<<"pm"<<endl; else cout<<"am"<<endl; } else { if(hour%12<10) cout<<"0"; cout<<hour%12<<":"; if(minute<10) cout<<"0"; cout<<minute<<":"; if(sec<10) cout<<"0"; cout<<sec; if(hour/12) cout<<"pm"<<endl; else cout<<"am"<<endl; } } void Time::add_seconds(int n) { sec+=n; if(sec>=60) { sec-=60; minute+=1; } if(minute>=60) { minute-=60; hour+=1; } if(hour>=24) { hour-=24; } } void Time::add_minutes(int n) { minute+=n; if(minute>=60) { minute-=60; hour+=1; } if(hour>=24) { hour-=24; } } void Time::add_hours(int n) { hour+=n; if(hour>=24) { hour-=24; } } void Time::change24() { is_24=!is_24; } void Time::changefrom0() { from0=!from0; } int main() { cout<<"24制,不前导:"<<endl; cout<<"t1="; Time t1(23,14,25); t1.show_time( ); cout<<"t2="; Time t2(8,45,6); t2.show_time( ); cout<<"10小时后,切换是否前导: "<<endl; t1.add_hours(10); t2.add_hours(10); Time::changefrom0(); cout<<"t1="; t1.show_time( ); cout<<"t2="; t2.show_time( ); cout<<"换一种制式:"<<endl; Time::change24(); cout<<"t1="; t1.show_time( ); cout<<"t2="; t2.show_time( ); }
二、运行结果:
三、心得体会:使用静态函数可以保证时间的初始值不变,静态成员只能在静态函数中被引用。
四、知识点总结:show_time函数中要先判断时间是什么制式,再输出,运用is_24=true和from0改变时间的制式的决定是否加前导。
相关文章推荐
- leetcode笔记:Reconstruct Itinerary
- C++大话设计模式之策略模式
- C/C++中 union/struct/class的内存对齐
- [C++]N阶行列式计算
- c++实验3-个人所得税计算器
- C++作业3——本月有几天、定期存款利息计算器、多分数段函数求值
- C++实验3-个人所得税计算器
- c++中sort()及qsort()的用法总结
- C语言实现推箱子小游戏
- C语言函数
- C++实现读取特定路径下文件夹及文件名的方法
- C++ GC
- C语言如何求闰年,打印输出1000-2000年之间的所有闰年.
- C++回调函数(1)--基本概念
- C++之再续前缘(一)——C++基础(与C语言的差异)(上)
- 这也许是最不正经的C语言教程……函数篇
- 【c++】蛇形矩阵
- c++第三次作业-3
- c++第三次作业
- 分治小结