/************************************************************************/
/* 本段代码实现日期检测(润平年检测),和 天数计算 */
/************************************************************************/
#include <iostream>
using namespace std;
struct MyDate
{
int year;
int month;
int day;
};
int checkDate(MyDate date)
{
int flag=date.year %400==0 ||(date.year %4==0 && date.year %100!=0);
if(date.year<=0 || date.month<=0 || date.day <=0)
return 0;
if(((date.month==1 || date.month==3 || date.month==5 ||date.month==7 ||date.month==8 ||date.month==10 ||date.month==12)&&date.day<=31)
||((date.month==4 ||date.month==6 ||date.month==9 ||date.month==11) && date.day<=30)
||(flag==1 && date.month==2 && date.day<=29)
||(flag==0 && date.month==2 && date.day<=28))
return 1;
else
return 0;
}
int main()
{
char fh;
MyDate date={0};
cout<<"请输入一个日期(如2010-10-10):";
cin>>date.year>>fh>>date.month>>fh>>date.day;
if(checkDate(date)==1)
{
cout<<date.year<<"年"<<date.month<<"月"<<date.day<<"日";
int i;
int month_day[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(date.year %400==0 ||(date.year %4==0 && date.year %100!=0))
{
month_day[2] = 29;
}
for (i=1;i<date.month;i++)
date.day=date.day+month_day[i];
cout<<"是本年的第"<<date.day<<"天!\n";
}
else
{
cout<<"输入日期不正确!"<<endl;
}
return 0;
}