1、题目
输入某年某月某日,判断这一天是这一年的第几天?
2、思路分析
假设输入的是2023/02/14,因为1月份有31天,则,2/14应该是2023年中的第:31 + 14= 45天。以此类推,要判断第几天,需要加上前几个月的天数,再加上输入的月份的天数即可。
需要注意的是,要区别是否为闰年,闰年则天数需要多加1天。
3、代码分析
代码如下(示例):
#include <stdio.h>
int main(void)
{
int day,month,year;
int sum = 0;
printf("please input days:");
scanf("%d,%d,%d",&year,&month,&day);
switch (month)
{
case 1: sum = 0; break;
case 2: sum = 31;break;
case 3: sum = 59;break;
case 4: sum = 90;break;
case 5: sum = 120;break;
case 6: sum = 151;break;
case 7: sum = 181;break;
case 8: sum = 212;break;
case 9: sum = 243;break;
case 10: sum = 273;break;
case 11: sum = 304;break;
case 12: sum = 334;break;
default:
printf("error month!\n");
return 1;
}
//判断是否是闰年
if ((year % 400 == 0) || ((year %4 == 0) && (year % 100) != 0))
{
printf("leap year\n");
if (month > 2)
sum++; //是闰年,则sum + 1
}
else
{
printf("no-leap year\n");
}
sum += day;
printf("it is the %d day in this year\n",sum);
return 0;
}
4、 总结
这个题目相对来说,比较好解决,考虑到前几个月份的天数加上输入月份的天数,还有闰年问题即可。