问题描述:
求输入年份和月份,显示出前后三个月的日历的C++程序!
设计内容及其基本原理和设计方法
1.问题描述:
随意给出某年某月(如2003年1月),可以显示2002年12月、2003年1月、2003年2月的日历(包括每月的天数和所对应的星期几),并且在每月的左上角或右上角打印出相应的年份和月份,要求输出界面尽可能整齐、美观。
2.解决方案:
根据问题描述,可以将问题解决分为两部:
(1)从公元01年的第一天开始考虑(01年1月1日对应星期一),判断该月的前1个月是否是1月份,从而确定要输出的第一个月的年份,进而判断从01年至要显示第一个月所在的年以前的年份是否闰年,以计算从01年至要显示第一个月所在的年开始的总天数;
(2)计算从01年至显示第一个月开始的总天数
(3)注意每月的天数不同,并且二月份又有两种情况:是闰年和不是闰年的情况。
(4)为了将每月的日期和星期相对应,用总天数除7取余,控制日期和星期几的对应关系。
四、主要技术问题的描述
依据三的描述,可以构造两个函数,一个函数来判断该年是否闰年:intIsLeapYear(intyear);另一个函数计算从01年开始到给定月份month的前一个月开始的总天数:intCaculDay(intyear,intmonth),利用一个一维数组month_day[],存放不同月对应的天数。