#include <stdio.h>
int leap(int year); //判断闰年
int sum_days(int month); //计算前几个月的总天数
int main()
{
printf("请输入年份:");
int year;
scanf_s("%d", &year);
if (year < 1) //判断年份是否输入错误
{
printf("年份输入错误!\n");
return 0;
}
printf("请输入月份:");
int month;
scanf_s("%d", &month);
if (month < 1 || month >12) //判断月份是否输入错误
{
printf("月份输入错误!\n");
return 0;
}
printf("请输入日期:");
int day;
scanf_s("%d", &day);
if (month == 2) //判断日期是否输入错误
{
if (day < 1 || day >29) //判断2月的日期是否输入错误
{
printf("日期输入错误!\n");
return 0;
}
else if (day == 29 && leap(year) == 0)
{
printf("日期输入错误!\n");
return 0;
}
}else if (month == 4 || month == 6 || month == 9 || month == 11) //判断4月、6月、9月、11月的日期是否输入错误
{
if (day < 1 || day >30)
{
printf("日期输入错误!\n");
return 0;
}
}
else //判断其他月份的日期是否输入错误
{
if (day < 1 || day >31)
{
printf("日期输入错误!\n");
return 0;
}
}
int total_days = sum_days(month) + day; //计算前几个月的总天数加上当前月份的天数
if (leap(year) == 1 && month > 2) //如果是闰年且月份大于2月,则总天数加1
total_days += 1;
printf("%d年%d月%d日是该年的第%d天。\n", year, month, day, total_days); //输出结果
return 0; //程序结束
}
int leap(int year)
{
if (year % 4 != 0) //判断是否为闰年
return 0;
else if (year % 100 != 0)
return 1;
else if (year % 400 != 0)
return 0;
else
return 1;
}
int sum_days(int month)
{
int day = 0;
switch (month - 1) //计算前几个月的总天数
{
case 11: day += 30;
case 10: day += 31;
case 9: day += 30;
case 8: day += 31;
case 7: day += 31;
case 6: day += 30;
case 5: day += 31;
case 4: day += 30;
case 3: day += 31;
case 2: day += 28;
case 1: day += 31;
}
return day; //返回总天数
}