#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;		//返回总天数
}

Ciallo~(∠・▽< )⌒☆