一、题目:
输入年月日,输出这是此年的第几天。
示例:
输入:2012 12 31
输出:365
二、分析思路:
因为月份之间存在相同的数字,例如1,3,5,7,8,10,12是31天。4,6,9,11是30天,所以就可以使用switch函数,而有一个特例就是2月是28天,如果是闰年的话2月就是29天。那么在switch后面加上一个判断语句就可以了。
三、程序实现:
int is_leap_year(int year)
{
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
{
return 1;
}
else
{
return 0;
}
}
int main()
{
int year = 0;
int month = 0;
int day = 0;
scanf("%d %d %d", &year, &month, &day);
int ret = is_leap_year(year);
while (month - 1)
{
switch (month - 1)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day += 31;
break;
case 2:
day += 28;
break;
case 4:
case 6:
case 9:
case 11:
day += 30;
break;
default:
break;
}
if (ret == 1 && month - 1 == 2)
{
day += 1;
}
month--;
}
printf("%d", day);
return 0;
}
注意:因为 输入的日期是当月的日期,所以要算到前面的一个月之后咋加上当月的天数。