前言
本题是计算给定日期在该年的天数,根据年份,我们可以分为闰年和平年,他们的主要区别在于第二个月的时候的天数是不一样的,当为闰年的时候,计算二月的天数时要多加一天。
一、题目描述
Problem Description
给定一个日期,输出这个日期是该年的第几天。
Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
Sample Input
1985/1/20
2006/3/12
Sample Output
20
71
二、题目理解
思路
根据题目可知,我们要通过给定的日期来计算是该年的第几天,按照要求输入,在变量之间通过/来分隔,因此在scanf中%d与%d之间需要有“/”。将数据输入后,我们要根据年份来判断该年是否为闰年,在计算二月的天数的时候可以收到正确的数据。
代码展示
#include<stdio.h>
int main()
{
int num[12]= {31,28,31,30,31,30,31,31,30,31,30,31};
int year,month,day,sum;
while(scanf("%d/%d/%d",&year,&month,&day)!=EOF)
{
sum=0;
if((year%4==0&&year%100!=0)||year%400==0)
{
for(int i = 0; i < month-1; i++)
{
if(i==1)
{
sum = sum + 29;
}
else
{
sum = sum + num[i];
}
}
sum = sum + day;
printf("%d\n",sum);
}
else
{
for(int i = 0; i < month-1; i++)
{
sum = sum + num[i];
}
sum = sum + day;
printf("%d\n",sum);
}
}
return 0;
}