#include<iostream>
#include<string>
using namespace std;
class date //定义Date类
{
private:
int day;
int month;
int year;
public:
date(); //无参构造函数
date(int,int,int); //有参构造函数
void prevdate(); //prevdate函数用于计算上前一天的日期
void setdate(int,int,int); //setdate函数用于设定Date类对象成员的值
};
date::date(int year,int month,int day) //有参构造函数
{
this->year=year;
this->month=month;
this->day=day;
}
void date::setdate(int year,int month,int day) //setdate函数
{
this->year=year;
this->month=month;
this->day=day;
}
void date::prevdate() //prevdate函数,计算前一天日期
{
int prevday;
int prevmonth;
int prevyear;
if(day==1)
{
switch (month) //当日期为1时 判断各个月份的情况
{
case 2:case 4:case 6:case 8:case 9:case 11:
prevday=31;
prevmonth=month-1;
prevyear=year;
break;
case 5:case 7:case 10:case 12:
prevday=30;
prevmonth=month-1;
prevyear=year;
break;
case 3:
if(((year%4==0)&&(year%100!=0))||(year%400==0))
{
prevday=29;
prevmonth=2;
prevyear=year;
}
else
{
prevday=28;
prevmonth=2;
prevyear=year;
}
break;
case 1:
prevday=31;
prevmonth=12;
prevyear=year-1;
break;
}
}
else
{
prevday=day-1;
prevmonth=month;
prevyear=year;
}
cout<<"The prevdate is "<<prevyear<<" "<<prevmonth<<" "<<prevday<<endl;
}
int main()
{
int year,month,day;
while(cin>>year>>month>>day) //输入数据
{
if(year<0)//判断非法日期输入
{
cout<<"Date error!Please input again!"<<endl;
continue;
}
else
{
switch (month)
{
case 1:case 3:case 5:case 7:case 8:case 10: case 12:
if(day<1||day>31)
{
cout<<"Date error!Please input again!"<<endl;
continue;
}
break;
case 4:case 6:case 9:case 11:
if(day<1||day>30)
{
cout<<"Date error!Please input again!"<<endl;
continue;
}
break;
case 2:
if((year%4==0&&year%100!=0)||year%400==0)
{
if(day<1||day>29)
{
cout<<"Date error!Please input again!"<<endl;
continue;
}
}
else
{
if(day<1||day>28)
{
cout<<"Date error!Please input again!"<<endl;
continue;
}
}
break;
default:
cout<<"Date error!Please input again!"<<endl;
continue;
break;
}
}
date Date(year,month,day);
Date.prevdate();
}
}
输入一个日期,计算前一天的日期
最新推荐文章于 2022-12-17 01:09:44 发布