输入年份月份实现日历打印,C到C++过渡。

本文介绍了从C到C++过渡时如何实现输入年份月份打印日历的功能。通过算法介绍和函数封装,包括计算闰年、某月天数、距1900年1月1日的天数,以及使用C++类实现日历显示。同时,还提到了C语言版的蔡勒公式日历打印实现。
摘要由CSDN通过智能技术生成

注意事项

笔者初学C++,代码并不是纯C++

算法介绍

设要算的年份是x,S=(x-1)+[ (x-1)/4 ]-[ (x-1) / 100 ]+[(x-1)/400]+C 。
C表示从这一年的元旦算到你要算的那一天为止(包含那一天)的日数 。
最终除的得出的S除以7后,若整除表示是星期天 若余数为1,就是星期一,以此类推。
从这个算法可以推断是外国人,但是谁我忘了…
其次蔡勒公式也是很出名的,在最后开源无函数封装的蔡锷公式写的代码。

函数封装

1.计算某年是闰年

算法:满足闰年的条件是 年数整除4并且年数整除100 是闰年 或者 年数整除400是闰年

返回值  ?1:0
	char R(int year)
	{
   
		return (year % 4 == 0 && year % 100 != 0 ) || year % 400 == 0;
	}

2.获取某年某月距1月1日共有多少天

特殊在2月,利用判断闰年函数计算,返回值 总天数

	int getdaycount(int year,int month)
	{
   
		int daycount = 31;
		if(month==4||month==6||month==9||month==11)
		{
   
			daycount = 30;
		}
		else if(month==2)
		{
   
			daycount = (R(year) ? 29 : 28);
		}
		return daycount;
	}

3.计算某年某月到1900年1月1日有多少天

以1900年1月1日是星期一为标准日,计算总天数

	int getinterval(int year,int month)
	{
   
		int interval = 0;//interval:间隔,间隙
		int i = 1900;
		for(;i<year;i++)//累加年份的天数
		{
   
			interval += R(year) ? 366 : 365;//年x日=除前年份总天数
		}
		for(i=1;i<month;i++)//累加月份的天数
		{
   
			interval += getdaycount(year,i);//加上当年总天数
		}
		return interval;//返回值为间隔的总天数和
	}

4.日历显示

void showcalendar(int year,int month)
	{
   
		int daycount = getdaycount(year,month)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值