1.首先要搞清闰年的判断方法
闰年:
(1)如果year能够被4整除,但是不能被100整除,则year是闰年。
(2)如果year能够被400整除,则year是闰年。
(3)闰年如果月份大于2 总天数加1。
代码如下
#include <stdio.h>
int main(int argc, char const *argv[]) //判断这一年的第几天
{
int year, mon, day, sum = 0;
printf("请输入一个日期,格式year-mon-day\n");
scanf("%d -%d -%d", &year, &mon, &day);
if (mon > 0 && mon <= 12)
{
if (day > 0 && day < 32)
{
switch (mon)
{
case 1:
sum += 0;
break;
case 2:
sum += 31;
break;
case 3:
sum += 59;
break;
case 5:
sum += 120;
break;
case 7:
sum += 181;
break;
case 8:
sum += 212;
break;
case 10:
sum += 273;
break;
case 11:
sum += 304;
break;
case 4:
{
if (day < 31)
sum += 90;
else
{
printf("错误!4月没有31号,请重新输入\n");
return 0;
}
}
break;
case 6:
{
if (day < 31)
sum += 151;
else
{
printf("错误!6月没有31号,请重新输入\n");
return 0;
}
}
break;
case 9:
{
if (day < 31)
sum += 243;
else
{
printf("错误!9月没有31号,请重新输入\n");
return 0;
}
}
break;
case 12:
{
if (day < 31)
sum += 355;
else
{
printf("错误!12月没有31号,请重新输入\n");
return 0;
}
}
break;
}
day += sum;
if ((year % 4 == 0 && year % 100 != 0 || year % 400 == 0) && mon <= 2) //判断是否为润年
{
printf("是润年 ,处于第%d天\n", day);
}
else if ((year % 4 == 0 && year % 100 != 0 || year % 400 == 0) && mon > 2)
{
day += 1;
printf("是润年 ,处于第%d天\n", day);
}
else //平年
{
printf("是平年,处于第%d天\n", day);
}
}
else
{
printf("day输入错误,请重新输入\n");
return 0;
}
}
else
{
printf("月份输入错误,请重新输入\n");
return 0;
}
return 0;
}
3. 编译运行结果如下