C++第三次上机实验作业
来源:互联网 发布:微波电路s参数矩阵 编辑:程序博客网 时间:2024/05/21 09:38
一、问题及代码
/*文件名称:4.111.cpp* 作 者: 邹鸿运* 完成日期: 2016年 4月 8日* 版 本 号:CodeBlocks* 对任务及求解方法的描述部分:* 设计含有静态数据成员和成员函数的Time类。* 输入描述: 无* 问题描述: 项目1-静态成员应用* 程序输出: 使用类和对象,静态成员以及函数的调用。* 问题分析: 考虑12小时制和24小时制,以及是否前导0和选择输出输出am,pm。* 算法设计: 使用类和对象,静态成员以及函数的调用。*/#include<iostream>using namespace std;class Time{public: Time(int h,int m,int s); void show_time( ); //根据is_24和from0,输出适合形式-20:23:5/8:23:5 pm/08:23:05 pm void add_seconds(int n); //增加n秒钟 void add_minutes(int n); //增加n分钟 void add_hours(int n); //增加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=1;bool Time::from0=0; //下面写出静态成员的初始化及各成员函数的定义……Time::Time(int h,int m,int s){sec=s;minute=m;hour=h;}void Time::show_time(){ int a=0;if((!from0)&&is_24) { 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(from0&&!is_24){ if(hour>=12) { hour%=12; a+=1; } if(hour<10) { cout<<"0"; } cout<<hour<<":"; if(minute<10) { cout<<"0"; } cout<<minute<<":"; if(sec<10) { cout<<"0"; } cout<<sec; if(a) { cout<<" pm"; } else cout<<" am"; } else if((!from0)&&(!is_24)) { if(hour>=12) { hour%=12; a+=1; } cout<<hour<<":"<<minute<<":"<<sec; if(a) { cout<<" pm"; } else cout<<" am"; } cout<<endl;}void Time::add_seconds(int n){cout<<"增加n秒:";cin>>n;sec+=n;if(sec>=60){minute+=(sec/60);sec%=60;if(minute>=60){hour+=(minute/60);minute%=60;}if(hour>=24){hour%=24;}}}void Time::add_minutes(int n){cout<<"增加n分钟:";cin>>n;cout<<endl;minute+=n;if(minute>=60){hour+=(minute/60);minute%=60;}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;Time t1(23,14,25);Time t2(8,45,6);cout<<"t1是:"; t1.show_time(); cout<<"t2是:"; t2.show_time(); cout<<"10小时后,切换是否前导:"<<endl; t1.add_hours(10); t2.add_hours(10); cout<<"t1是:"; t1.changefrom0(); t1.show_time(); cout<<"t2是:"; t2.show_time(); cout<<"换一种制式:"<<endl; t1.change24(); cout<<"t1是:"; t1.show_time(); cout<<"t2是:"; t2.show_time();return 0;}
二、运行结果
三、心得体会
对类和对象的使用还是不熟练,在使用是否前导0时,可以使用选择结构,选择是否输出0,后面可以直接输出时间,在调用change24和changefrom0时,在主函数中要根据所要输出的内容,注意不要重复调用,不然结果和没调用一样。
四、知识点总结
静态成员函数共用,有些地方只要调用一次,不要重复调用,注意秒进分,分进时的处理,及24时制和12小时制的转换。
0 0
- C++第三次上机实验作业
- C语言第三次上机实验
- 第三次C语言上机实验
- C++第三次上机实验其他作业
- c语言程序设计第三次上机实验报告
- 第三次C语言上机实验报告
- c语言程序设计第三次上机实验报告
- 第三次上机作业
- 第三次上机作业
- 第三次上机作业
- 第三次上机作业
- 第三次上机作业
- 第三次c++上机作业
- 第三次上机作业
- c++第三次上机作业
- C++第三次上机作业
- C++第三次上机作业
- 第三次上机作业
- android中TextView分段展示不同颜色,字体,时间
- Java中Synchronized的用法
- C++第三次试验2.1
- 关于表单提交数据转Json
- Mapper抽象类参数
- C++第三次上机实验作业
- dbm的功率计算方法
- animation
- java-eclipse-创建maven项目
- Auto property synthesis will not synthesize property …because it is ‘readwrite’ but it will be synth
- VS2005为什么有些解决方案不能生成,显示已跳过,也不能编译?打开属性,总是报错。
- 谷歌离线地图API解析
- 关于LoadRunner中pacing值的设置的意义
- MapReduce:详解Shuffle(copy,sort,merge)过程