C语言实现简单万年历

#include <stdio.h>
#include<stdlib.h>
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;


}

  • 17
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业C语言课程设计计算机毕业设计期末大作业
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值