文章目录
给定一个日期,输出这个日期是该年的第几天。
输入格式:
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见输入样例,另外,可以向你确保所有的输入数据是合法的。
输出格式:
对于每组输入数据,输出一行,表示该日期是该年的第几天。
输入样例:
1985/1/20
2006/3/12
输出样例:
20
71
解题代码:
#include <stdio.h>
int main()
{
int year,month,day,store[]={0,31,28,31,30,31,30,31,31,30,31,30,31},i;
while(scanf("%d/%d/%d",&year,&month,&day)!=EOF)
{
store[2]=28;
if((year%4==0&&year%100!=0)||year%400==0) store[2]=29;
for(i=1;i<month;i++)
day+=store[i];
printf("%d\n",day);
}
return 0;
}
如何判断闰年:
基本思路:需要满足两个条件
(1)四年一闰百年不闰:如果year能够被4整除,但是不能被100整除,则year是闰年。
(2)每四百年再一闰:如果year能够被400整除,则year是闰年。
一句话写法:
if((year%4==0&&year%100!=0)||year%400==0) //满足条件是闰年
闰年有什么不同:
闰年的2月有29天,其他年份的2月有28天
解题思路:
在本题目中,可以用一个数组存放每个月的天数,默认2月有28天,如果判断成功是闰年,则将存储的数组中2月的天数变成29天
需要注意的是:一次完整的输出结束后,需要将存储天数的数组恢复原状