C语言实现简单万年历

#include 
#include
int year, month;
int run[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 };
int ping[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
char week[7][10] = { "SUN","MON","TUE","WED","THU","FRI","SAT" };

bool IsLeap(int year)
{
	if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))	//判断闰年
	{
		return true;
	}
	else
	{
		return false;
	}
}
void PrintStar()
{
	printf("\t\t\t万年历\t\t\t\n");
	printf("****************************************************\n");
	for (int i = 0; i < 7; i++)
	{
		printf("%s\t", week[i]);
	}
	printf("\n");
}
int DaySum(int year, int month)
{
	int sum = 0;
	for (int i = 1990; i < year; i++)
	{
		if (IsLeap(i))
		{
			sum += 366;
		}
		else
		{
			sum += 365;
		}
	}
	for (int i = 0; i < month - 1; i++)
	{
		if (IsLeap(year))
		{
			sum += run[i];
		}
		else
		{
			sum += ping[i];
		}
	}
	return sum;
}

void PrintCal(int sum, int year, int month)
{
	int nRes, nTmp;
	nRes = sum % 7+1;//前面空几格
	nTmp = 7 - nRes;//从第几格开始打印
	for (int i = 0; i < nRes; i++)
	{
		printf("\t");
	}
	if (IsLeap(year))
	{
		for (int i = 1; i < run[month - 1]+1; i++)
		{
			printf("%d\t", i);
			if (nTmp == i || (i - nTmp) % 7 == 0)
			{
				printf("\n");
			}
		}
		printf("\n");
	}
	else
	{
		for (int i = 1; i < ping[month - 1]+1; i++)
		{
			printf("%d\t", i);
			if (nTmp == i || (i - nTmp) % 7 == 0)
			{
				printf("\n");
			}
		}
		printf("\n");
	}

}
int main(void)
{
	while (1)
	{
		scanf_s("%d %d", &year, &month);
		PrintStar();
		PrintCal(DaySum(year, month), year, month);
		printf("****************************************************\n");
	}
	
	return 0;


}

C语言实现简单万年历_第1张图片

你可能感兴趣的:(c/c++,python)