题目:输入一个日期,计算出这个日期是这一年的第多少天。
分析:方法(1):如果我们实现了一个基本的日期类Date的话,可以创建一个日期类对象d1,将其初始化为这一年的第一天(1月1日)然后再创建一个日期类对象d2,将其初始化为输入的这个日期,然后将d2-d1+1就是我们想要的结果,但是这种思路的前提是实现了这个基本的日期类,并且重载一些运算符,比如减等。方法(2):因为每年的每个月的天数都一样(除了2月是闰年外),则我们可以定义一个数组数组中存第1个月、前2个月、前3个月...前12个月的天数,那么假如我们给定一个日期得出其是这一年的第多天。如5月4日,就是前4个月的天数+5月的这四天。以下我们通过简单的方法(2)来实现:
bool IsLeapYear(int year)//判断是否为闰年
{
if ((year%4==0) && (year%100!=0) || (year%400==0))
{
return true;
}
else
{
return false;
}
}
int main()
{
int year;
int month;
int day;
cin >> year >> month >> day;
//a[i]就是前i个月的总天数
int monthday[13] = {0,32,58,90,120,151,181,212,243,273,304,334,365};
day = monthday[month - 1] + day;
if (month > 2 && IsLeapYear(year))//如果月份大于2,并且这一年是闰年,要多加1天
{
day = day + 1;
}
cout << day << endl;
system("pause");
return 0;
}