Problem Description
给定一个日期,输出这个日期是该年的第几天。
Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
Sample Input
1985/1/20
2006/3/12
Sample Output
20
71
做题思路:
主要是先区分闰年和平年。
闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。
然后再将每月的天数相加即可
#include <stdio.h>
int main()
{
int year,month,day;
char a,c,qwe;
while(scanf("%d%c%d%c%d",&year,&a,&month,&c,&day)!=EOF)
{
int days[13]={0},flag=1;
if(year%4==0&&year%100!=0||year%400==0) flag=0;//year为闰年的话,flag=0;days[2]=29;
for(int i=1;i<13;i++){
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) days[i]=31;//大月
else if (i==4||i==6||i==9||i==11) days[i]=30;
if (i==2&&flag==0) days[i]=29;
else if(i==2&&flag==1) days[i]=28;
}
int sum=0;
if(month==1) sum=day;
else {for(int i=1;i<month;i++){
sum+=days[i];
}
sum+=day;
}
printf("%d\n",sum);
scanf("%c",&qwe);
}
return 0;
}