题目内容:
定义一个带重载构造函数的日期类Date,数据成员有年、月、日;成员函数包括:一个带参数的构造函数Date(int,int,int),一个不带参数的构造函数(设置日期为1900年1月1日),一个按“年-月-日”格式显示日期的函数,一个对数据成员赋值的函数void
init(int,int,int)。
主函数中对类的测试要求:
1.
分别使用两个不同的重载构造函数创建两个日期类对象(必须为d1,d2,d2初始值为2100-12-12);
2.
按“年-月-日”格式分别显示两个对象的值;
3. 输入数据,用init函数为d1赋值;
2.按“年-月-日”格式显示对象d1的值;。
输入格式:
给d1赋值的数据
输出格式:
d1的默认值d2的初始值d1赋值后的值
输入样例:
2011 4 29
输出样例:
1900-1-1
2100-12-12
2011-4-29
#include <iostream>
#include <cmath>
#include<iomanip>
using namespace std;
class MyTime
{
int hour;
int min;
int sec;
int seccha(int h,int m,int s);
public:
MyTime(){
hour = 0;
min = 0;
sec = 0;
}
MyTime(int h,int m,int s)
{
(h>=0 && h<=12)? hour = h:hour = 0;
(m>=0 && m<=60)? min = m:min = 0;
(s>=0 && s<=60)? sec = s:sec = 0;
}
void inite(int h,int m,int s)
{
(h>=0 && h<=12)? hour = h:hour = 0;
(m>=0 && m<=60)? min = m:min = 0;
(s>=0 && s<=60)? sec = s:sec = 0;
}
void out_12()
{
int h1;
if(hour>=12) {
h1 = hour%12;
cout<<setw(2)<<setfill('0')<<h1<<":"<<setw(2)<<setfill('0')<<min<<":"<<setw(2)<<setfill('0')<<sec<<" "<<"PM"<<endl;
}else
{
cout<<setw(2)<<setfill('0')<<hour<<":"<<setw(2)<<setfill('0')<<min<<":"<<setw(2)<<setfill('0')<<sec<<" "<<"AM"<<endl;
}
}
void out_24()
{
cout<<setw(2)<<setfill('0')<<hour<<":"<<setw(2)<<setfill('0')<<min<<":"<<setw(2)<<setfill('0')<<sec<<endl;
}
void Addtime(int h, int m, int s)
{
sec = sec + s;
if(sec >=60)
{
min = min + sec/60;
sec = sec % 60;
}
min = min + m;
if(min >=60)
{
hour = hour + min/60;
min = min % 60;
}
hour = (hour + h) % 24;
}
void decreatime(int h, int m, int s)
{
int sum1 = seccha(h,m,s);
int sum2 = seccha(hour,min,sec);
int sum = abs(sum1 - sum2);
int h1,m1,s1;
hour = sum/3600;
min = (sum%3600)/60;
sec = sum%60;
}
};
int MyTime :: seccha(int h,int m,int s)
{
return h*3600 + m*60 + s;
}
int main()
{
int hour,min,sec,h1,m1,s1;
cin>>hour>>min>>sec>>h1>>m1>>s1;
MyTime t1,t2(8,10,30);
t1.out_12();
t1.out_24();
t2.out_12();
t2.out_24();
t1.inite(hour,min,sec);
t1.Addtime(h1,m1,s1);
t1.out_12();
t1.out_24();
t2.decreatime(h1,m1,s1);
t2.out_12();
t2.out_24();
return 0;
}