问题描述
定义一个满足如下要求的Time类。
(1)用下面的格式输出时间,每个数据占两个字符宽度,不足两个字符补零,默认为24小时 :时:分:秒
(2)可运行加时的操作,注意加时后的时间正确性,支持时、分、秒同时增加
(3)修改为12小时制,并输出修改后的时间,输出的格式为时:分:秒 AM或时:分:秒 PM;其中AM/PM为大写英文字母,且和时间间隔一个空格。
#include<iostream>
#include<iomanip>
using namespace std;
class Time { //声明Time类
public:
Time(int h=0,int m=0,int s=0):hour(h),minute(m),sec(s) {};
void set_time();
int add_time();
void show_time();
private:
int hour;
int minute;
int sec;
};
void Time::set_time() { //定义输入时间的函数
cout<<"请依次输入时分秒,并用空格隔开,回车结束:"<<endl;
cin>>hour>>minute>>sec;
}
int Time::add_time() { //定义加时间函数
int a,b,c;
cout<<"请依次输入您想加的时分秒,0的部分请输0,用空格隔开:"<<endl;
cin>>a>>b>>c;
hour+=a;
minute+=b;
sec+=c;
}
void Time::show_time() { //定义输出时间函数,注意输出时间的合理性及格式
while(hour>=24||minute>=60||sec>=60) {
if(sec>=60) {
minute++;
sec-=60;
}
if(minute>=60) {
hour++;
minute-=60;
}
if(hour>=24) {
hour=hour-24;
}
}
cout<<"最终的时间是:"<<endl;
cout<<"24小时制:" << setfill('0')<<setw(2)<<hour<<":"<<setfill('0')<<setw(2)<<minute<<":"<<setfill('0')<<setw(2)<<sec<<endl;
cout<<"12小时制:";
if(hour<=12){
cout<<"AM "<<setfill('0')<<setw(2)<<hour<<":"<<setfill('0')<<setw(2)<<minute<<":"<<setfill('0')<<setw(2)<<sec<<" ";
}
if(hour>12){
hour-=12;
cout<<"PM "<<setfill('0')<<setw(2)<<hour<<":"<<setfill('0')<<setw(2)<<minute<<":"<<setfill('0')<<setw(2)<<sec<<" ";
}
}
int main() {
Time t1;
t1.set_time() ;
t1.add_time() ;
t1.show_time() ;
return 0;
}
输入示例
请依次输入时分秒,并用空格隔开,回车结束:
12 6 3
请依次输入您想加的时分秒,0的部分请输0,用空格隔开:
9 6 4
输出示例
最终的时间是:
24小时制:21:12:07
12小时制:PM 09:12:07
菜鸟一枚,欢迎指导