C++训练题
自定义一个简单日期类 DateType,它具有数据成员 y、m、d,用来表示当前日期的年、月、日。
而后设计该类欲实现(完成)的功能,进而设计出相应的类成员函数。
题目描述
自定义一个简单日期类 DateType,它具有数据成员 y、m、d,用来表示当前日期的年、月、日。
而后设计该类欲实现(完成)的功能,进而设计出相应的类成员函数。
class DateType {
//自定义的日期类 DateType
int y,m,d; //数据成员,表示当前日期的年、月、日
public:
DateType(int y0=1, int m0=1, int d0=1);
//构造函数,设定年、月、日;并设置参数默认值
void IncrementDay(); //增加 1 天
bool Equal(DateType dt2); //判断二日期是否相等
void PrintDate(); //屏幕输出日期对象的有关数据(年、月、日)
};
1、完成有参构造函数
2、完成 void
IncrementDay()函数,计算天数加1后的日期。
3、完成Equal(DateType
dt2)函数,判断两个日期是否相等。
4、完成打印输出函数PrintDate(),在屏幕上输出日期对象的有关数据(年、月、日)
5、编写并完成主函数,实现输入包含六个整数,说明DateType类对象dt1,dt2,分别是dt1和dt2的年月日。请先输出dt1,dt2,然后判断dt1,dt2是否相等,再对dt1,dt2分别增加一天。最后输出dt1,dt2。
代码如下:‘
#include<iostream>
using namespace
std;
class DateType {
//自定义的日期类 DateType
int y,m,d; //数据成员,表示当前日期的年、月、日
public:
DateType(int y0=1, int m0=1, int d0=1);
//构造函数,设定年、月、日;并设置参数默认值
void IncrementDay(); //增加 1 天
bool Equal(DateType dt2); //判断二日期是否相等
void PrintDate(); //屏幕输出日期对象的有关数据(年、月、日)
};
DateType ::
DateType(int y0,int m0,int d0)
{
y=y0;
m=m0;
d=d0;
};
void DateType ::
PrintDate()
{
cout<<y<<":"<<m<<":"<<d<<endl;
}
bool DateType:: Equal(DateType dt2)
{
if(y==dt2.y&&m==dt2.m&&d==dt2.d)
return 1;
else
return 0;
};
void DateType ::
IncrementDay()
{
int
M[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if(y%4==0&&y%100==0||y%400==0)
{
M[1]=29;
};
switch(m)
{
case 1:if((d+1)>31){
m++;
d=1;}
else
d++;
break;
case 2:if((d+1)>M[1]){
m++;
d=1;}
else
d++;
break;
case 3:if((d+1)>M[2]){
m++;
d=1;}
else
d++;
break;
case 4:if((d+1)>M[3]){
m++;
d=1;}
else
d++;
break;
case 5:if((d+1)>M[4]){
m++;
d=1;}
else
d++;
break;
case 6:if((d+1)>M[5]){
m++;
d=1;}
else
d++;
break;
case 7:if((d+1)>M[6]){
m++;
d=1;}
else
d++;
break;
case 8:if((d+1)>M[7]){
m++;
d=1;}
else
d++;
break;
case 9:if((d+1)>M[8]){
m++;
d=1;}
else
d++;
break;
case 10:if((d+1)>M[9]){
m++;
d=1;}
else
d++;
break;
case 11:if((d+1)>M[10]){
m++;
d=1;}
else
d++;
break;
case 12:if((d+1)>M[11]){
m=1;
y++;
d=1;}
else
d++;
break;
}
};
int main()
{
int
d1_y,d1_m,d1_d,d2_y,d2_m,d2_d;
cin>>d1_y>>d1_m>>d1_d>>d2_y>>d2_m>>d2_d;
DateType dt1(d1_y,d1_m,d1_d),dt2(d2_y,d2_m,d2_d);
dt1.PrintDate();
dt2.PrintDate();
if(dt1.Equal(dt2))
cout<<"True"<<endl;
else
cout<<"False"<<endl;
dt1.IncrementDay();
dt2.IncrementDay();
dt1.PrintDate();
dt2.PrintDate();
}