#include <stdio.h>
struct date
{
int year;
int month;
int day;
};
int isleapyear(int a)
{
if(a%400==0||(a%4==0&&a%100!=0))
return 1;
else
return 0;
}
int Dayth(struct date a)
{
int i;
int sum=0,b[]={31,28,31,30,31,30,31,31,30,31,30,31} ;
for(i=0;i<a.month-1;i++)
sum+=b[i];
if(a.month>2)
sum=sum+a.day+isleapyear(a.year);
else
sum=sum+a.day;
return sum;
}
int Judge(struct date a)
{
if(a.month==1||a.month==3||a.month==5||a.month==7||a.month==8||a.month==10||a.month==12)
if(a.day<=31&&a.day>=1)
return 1;
else
return 0;
else if(a.month==4||a.month==6||a.month==9||a.month==11)
if(a.day<=30&&a.day>=1)
return 1;
else
return 0;
else if(a.month==2)
{
if(isleapyear(a.year))
if(a.day<=29&&a.day>=1)
return 1;
else
return 0;
else if(a.day<=28&&a.day>=1)
return 1;
}
else
return 0;
}
int main()
{
struct date a;
int n;
do
{
printf("\n请输入日期(年 月 日)\n");
scanf("%d%d%d",&a.year,&a.month,&a.day);
}while(!Judge(a));
n=Dayth(a);
printf("该日在本年中是第%d天\n",n);
return 0;
}
struct date
{
int year;
int month;
int day;
};
int isleapyear(int a)
{
if(a%400==0||(a%4==0&&a%100!=0))
return 1;
else
return 0;
}
int Dayth(struct date a)
{
int i;
int sum=0,b[]={31,28,31,30,31,30,31,31,30,31,30,31} ;
for(i=0;i<a.month-1;i++)
sum+=b[i];
if(a.month>2)
sum=sum+a.day+isleapyear(a.year);
else
sum=sum+a.day;
return sum;
}
int Judge(struct date a)
{
if(a.month==1||a.month==3||a.month==5||a.month==7||a.month==8||a.month==10||a.month==12)
if(a.day<=31&&a.day>=1)
return 1;
else
return 0;
else if(a.month==4||a.month==6||a.month==9||a.month==11)
if(a.day<=30&&a.day>=1)
return 1;
else
return 0;
else if(a.month==2)
{
if(isleapyear(a.year))
if(a.day<=29&&a.day>=1)
return 1;
else
return 0;
else if(a.day<=28&&a.day>=1)
return 1;
}
else
return 0;
}
int main()
{
struct date a;
int n;
do
{
printf("\n请输入日期(年 月 日)\n");
scanf("%d%d%d",&a.year,&a.month,&a.day);
}while(!Judge(a));
n=Dayth(a);
printf("该日在本年中是第%d天\n",n);
return 0;
}