C程序设计高手帮帮小弟!

来源:百度知道 编辑:UC知道 时间:2024/05/23 23:15:04
题目24: 万年历
功能: 根据用户输入的年度值,输出其年历
基本要求:
1.自行设计界面,要求用户输入要查询的日期,年份在1980~2099之间,按ESC程序结束。
2.根据用户输入值,将当年的年历在屏幕上显示。
3.显示格式为:在最上方显示年份,将12个月按照3列4行的分布显示出来,即第一大行显示1、2、3月,第二大行显示4、5、6月 ...;每个月都要显示代表星期几的抬头:Su Mo Tu We Th Fr Sa ,然后将本月的每一天按照顺序显示出来。周六、周日、法定节假日以红色字符显示,若用户输入了查询的具体日期,则将其以醒目颜色显示;若用户只输入了年份,则以当前的月日在年历上标记;若用户只输入了年、月,则以当前的日期在年历上标记。要求显示界面清晰、直观。
4. 按任意键返回主界面。
相关知识:图形操作、按键操作、时间函数等
功能扩充:1)增加音乐伴奏。
2)在屏幕上开辟一个显示区域,以数字方式显示当前系统的年月日时分秒。
3)给出更宽范围的年历显示(1949~2099)
难度系数:B
提示:根据系统当前的日期与星期的对应关系,反推出需要显示的年历。注意闰年问题。正确与否可以通过系统的万年历校验。

附:
C常用库函数浏览
C库函数浏览
C库函数查询
Turbo C编译出错信息解析

闰年
闰年: 1.为了弥补人为的年份规定与地球实际绕日公转的时间差,2.而人为把时间差补上了的年份,该年即为闰年.

遵循的规律为: 四年一闰,百年不润,四百年再润.

if((year % 400 == 0)|(year % 4 == 0)&(year % 100 != 0))//闰年的计算方法

详情如下:

闰年(leap year),在公历(格里历)或夏历中有闰日的年份,以及在中国旧历农历中有闰月的年份。地球绕太阳运行周期为365天5小时48分46秒(合365.24219天)即一回归年(tropical year)。公历的平年只有365日,比回归年短约0.2422 日,所余下的时间约为四年累计一天,于第四年加于2月,使当年的历年长度为366日,这一年就为闰年。现行公历中每400年有97个闰年。夏历的平年只有354日,比12个朔望月短0.3671日,为使每月初一与月朔相合,规定每30年中有11年的年底增加1日,这一年的历年有355日,即为闰年。中国旧历农历作为阴阳历的一种,每月的天数依照月亏而定,一年的时间以12个月为基准,平年比一回归年少约11天。为了合上地球围绕太阳运行周期即回归年,每隔2到4年,增加一个月,增加的这个月为闰月。在加有闰月的那一年有13个月,历年长度为384或385日,这一年也称为闰年。
按照每四年一个闰年计算,平均每年就要多算出0.0078天,这样经过四百年就会多算出大约3天来,因此,每四百年中要减少三个闰年。所以规定,公历年份是整百数的,必须是400的倍数的才是闰年,不是400的倍数的就是平年。

也就是我们通常所说的:
四年一闰,百年不闰,四百年再闰。

西方公历的“闰年”
阳历中有闰日的年份叫闰年,相反就是平年,平年为365天,闰年为366天。在公历(格里历)纪年中,平年的二月为28天,闰年的二月为29天。闰年平月2月29日为闰日。

增加闰日的原因
现时的公历以回归年为“年”的计算基础,而一个回归年大约等于365.24220日。因为在平年公历只计算365