c语言综合练习 打印日历教程 附完整源程序c语言综合练习 打印日历教程 附完整源程序.doc

c语言综合练习 打印日历教程 附完整源程序c语言综合练习 打印日历教程 附完整源程序.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c语言综合练习 打印日历教程 附完整源程序c语言综合练习 打印日历教程 附完整源程序

综合练习 打印日历 练习的功能是:由用户输入一个年后,然后就可以分月输出当年的年历。例如输入2010,则输出2010年的年历。如图,图中显示的年历的一部分: 学习目标:继续熟悉数组的使用; 继续熟悉函数的使用 了解程序算法设计及N-S流程图; 综合使用函数和数组完成设计 任务一 分析程序算法 图2 算法分析图 先来分析要解决的问题,如图2 程序算法分析如下: 整个程序大致可以分为两个主要部分:输入年份;打印该年的日历,如图2①所示。 打印日历时,为了清楚的知道打印的是哪一年的日历,先打印年份,接着从1月~12月,分别打印个月份的名称(英文缩写),然后打印星期的名称(英文缩写),最后在打印当月的日历,如图2②所示。 要打印某月的日历,首先必须生成当月日历,然后在打印,如图2③所示。 生成每个月的日历,需要知道当月有多少天,当月每一天是星期几,然后生成当月日历并保存,如图2④所示。 要知道每月有多少天是比较容易的,除了2月份外,其它月份的天数都是确定的,关键就是确定2月份有几天,如图2⑤所示。 如果当年是闰年,则2月份有29天,否则为28天。如图2⑥所示。 要想确定当月每一天是星期几,需要知道当年第一天是星期几,然后类推,每7天一个周期,如图2⑦所示。 经过以上的4~7步,可以生成日历,然后设计存储格式,保存日历。 设计好输出格式,打印已生成的日历即可,如图2⑧所示。 将图2加以综合和细化,最终可以得到整个程序的N-S流程图,如图3所示。 图3 算法分析N-S流程图 二、按功能划分函数 经过上面的分析,发现在这个程序设计中有几个关键部分: 确定每月有多少天,关键是确定当年是否为闰年。 确定每天是星期几,关键是确定当年1月1日是星期几。 设计数据的存储格式和打印格式。 对于较复杂的程序,可以把功能分解,每个小功能用一个函数实现,使程序的总体结构更加清晰。 在这个程序中,应考虑使用以下4个函数。 函数1: int leapyear(int year),判断year年是否是闰年。 函数2: void print2(int month,int t),按月打印日历。 函数3: void calendar(int year),按月生成日历。 函数4:main()函数。 任务二 确定每个月的天数 除了闰年外,每个月有多少天是确定的,所以首相确定非闰年每个月有多少天,然后判断当年是否是闰年,就可以确定当年的2月份有几天。 确定非闰年每年有多少天 可以使用一维整型数组monthday[]来存放每个月的天数,代码如下: int monthday[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; 数组长度定义为13,是因为这样定义赋值后“monthday[1]=31”,表示1月份的天数是31天,比较符合我们的日常习惯,元素monthday[0]没有使用。 确定当年2月有多少天 如果是闰年,则2月份29天,闰年的规定:凡是年份能够被4整除、且不能被100整除的是闰年;凡是年份能被400整除的也是闰年;除此以外的年份都不是闰年。 ||(year%400==0)) monthday[2]=29; 为了提高程序的可读性,实现程序的模块化设计,对闰年的判断设计成函数leapyear(); 闰年判断函数 int leapyear(int year) { if((year%4==0)(year%100!=0) ||(year%400==0)) return 1; else return 0; } 任务三 确定当年的每天是星期几 确定每天是星期几,关键是确定当年的1月1日是星期几。 在公元日历的编排中,公元元年几0001年1月1日是星期一,对于输入的年号year,year年的1月1日是星期几可以用下列公式计算: todayweek=[year+(year-1)/4 - (year-1)/100 + (year-1)/400]%7 注:此算法可以见另一附件“计算每年的第一天星期几”文档。 当年第一天是星期几判断出来了,就可以一次推算以后的日子是星期几。 任务四 设计数据存储格式,生成各月日历 必须为所有需要存储的数据设计存储结构,有了存储结构就可以存储生成的每个月的日历。 设计数据的存储格式 使用一维整型数组monthday存放每个月的天数。 int monthday[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; 使用二维字符数据monthname存放每个月的英文名称。 char monthname[13][6]={“”,”JAN”,”FEB”,”MAR”,”

文档评论(0)

pfenejiarz + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档