要求:输入一个日期,程序判断是否合法,合法则打印该日期,不合法则打印提示信息
思路:判断日期是否合法只需要满足year>1900,month>0&&month<13,对于day来说需要注意的是不仅要>0还要考虑2月的特殊情况,如果时闰年要+1。在这里为了方便我们直接定义一个数组存放12个月对应的天数,再根据月数return day即可。
下面上代码
#include<iostream>
#include<assert.h>
using namespace std;
class date
{
public:
void show()
{
cout<< _year << "-"<< _month << "-"<< _day <<endl;
}
int Getmonthday(int year, int month)
{
assert(month > 0 && month < 13);
static int days[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31,30, 31 };
int day = days[month];
if ((year % 4 == 0 && year % 100 != 0) || ((year % 400 == 0) && month == 2))
{
day += 1;
}
return day;
}
void Setday(int year, int month, int day)
{
if (year >= 1900 && month > 0 && month<13 && day>0 && day <=Getmonthday(year,month))
{
_year = year;
_month = month;
_day = day;
}
else
{
cout << "日期非法" << year << "-" << month << "-" << day<<endl;
}
}
private:
int _year;
int _month;
int _day;
};
int main()
{
date d1;
d1.Setday(2018, 6, 28);
d1.Setday(2018, 3, 32);
d1.show();
system("pause");
return 0;
}