解决的问题:当用户输入要查找的年份和月份时,可以显示出当年当月的日历。

程序代码:

#include <stdio.h>
#include <stdlib.h>
int main()
{
	int year = 0, month = 0, sum = 0, weekday = 0, month_count = 0;
	printf("请输入要查找的年份 -> ");
	scanf_s("%d", &year);
	printf("请输入要查找的月份 -> ");
	scanf_s("%d", &month);
	for (int i = 1990; i < year; i++)
	{
		if ((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0))
			sum += 366;
		else
			sum += 365;
	}
	for (int i = 1; i < month; i++)
	{
		if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12)
		{
			sum += 31;
		}
		else if (i == 4 || i == 6 || i == 9 || i == 11)
		{
			sum += 30;
		}
		else if (i == 2 && (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
		{
			sum += 29;
		}
		else
			sum += 28;
	}
	sum++;
	weekday = sum % 7;
	if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
		month_count = 31;
	else if (month == 4 || month == 6 || month == 9 || month == 11)
		month_count = 30;
	else if (month == 2 && (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
		month_count = 29;
	else
		month_count = 28;
	printf("\n\t \t %d月%d月\n\n", year, month);
	printf("日\t一\t二\t三\t四\t五\t六\n");
	for (int i = 0; i < weekday; i++)
		printf("\t");
	for (int i = 1; i <= month_count; i++)
	{
		if (sum % 7 == 6)
			printf("%d\n", i);
		else
			printf("%d\t", i);
		sum++;
	}
	system("pause");
	return 0;
}

比如:当输入2015年10月时,屏幕会显示:

wKioL1YZrLrhUnCSAABblpU0-yM416.jpg