3,881
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
int s[12] = {31,29,31,30,31,30,31,31,30,31,30,31};
int f[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
bool isLeap(int year) //判断是否为闰年
{
if((year%4==0 && year%100!=0)||(year%400==0))
return 1;
else
return 0;
}
int isLegal(int year,int month,int day) //判断日期是否合法
{
int j=0;
if(month>0 && month<=12 && day>0 && day<=31)
{
if(isLeap(year))
{
if(day <= s[month-1])
{ j=1; }
}
else
{
if(day <= f[month-1])
{ j=1; }
}
}
return j;
}
int Num(int year, int month, int day) //统计天数
{
int d = day;
if(isLeap(year))
{
for(int i=0;i<month-1;i++)
d+=s[i];
}
else
{
for(int i=0;i<month-1;i++)
d+=f[i];
}
return d;
}
int main(int argc, char* argv[])
{
int year,month,day;
do
{
printf("请输入正确格式的日期(yyyy-mm-dd):");
scanf("%4d-%2d-%2d",&year,&month,&day);
}while(!isLegal(year,month,day));
printf("该日期是该年的第%d天\n",Num(year,month,day));
system("pause");
return 0;
}