问题描述:
给定一个日期,输出这个日期是该年的第几天。
输入:
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
输出:
对于每组输入数据,输出一行,表示该日期是该年的第几天。
样例输入:
1985/1/20
2006/3/12
样例输出:
20
71
分析:
本题针对输入的值,需要判断是否是闰年,以及大月(31天)小月(30天)的判断。
代码:
#include<stdio.h>
int main()
{
int year, month, day, i;
while (~scanf_s("%d/%d/%d", &year, &month, &day))//输入值,注意每两个“%d”之间的“/”不能不写。
{
i = 0;
switch (month - 1)/注意case的顺序不能错,而且没有case 12这一项。当“month-1”符合哪一项,则会从哪一项开始计算,并且之后的所有的项都会计算在内
{
case 11: i += 30;
case 10: i += 31;
case 9: i += 30;
case 8: i += 31;
case 7: i += 31;
case 6: i += 30;
case 5: i += 31;
case 4: i += 30;
case 3: i += 31;
case 2: if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
i += 29;
else
i += 28;
case 1: i += 31;
}
i += day;//将输入的日也加上
printf("%d\n", i);
}
return 0;
}