预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共15页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

计算机学院C程序设计报告 PAGE\*MERGEFORMAT15 C语言课程设计报告 题目:编写一万年历系统 设计者:杨景 专业班级:通信1302 学号:311309020228 指导教师:张黎娜 2014年6月26日 河南理工大学计算机学院 目录 1题目与要求 1.1问题提出 1.2本系统涉及的知识点 1.3功能要求 2功能设计 2.1算法设计 2.2部分模块流程图 3程序代码设计 4C程序设计总结 参考文献 1题目与要求 1.1问题提出(左对齐,宋体粗小四号) 本人计划编写一个编写一万年历系统, 1.2本系统涉及的知识点 结构、数组、循环、函数、分支、指针 1.3功能要求 1.当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几); 2.当系统日期变到下一月时,安回车键自动翻页到下一月; 3.输入对应的年,输出相应的月份; 2功能设计 .1设计编写一个C程序—“万年历”。 1.2输入任一年将显示出该年的所有月份日期,对应的星期。 1.3下一行显示星期,从周日到周六,英文表示。 1.4下一行开始显示日期从1号开始,并按其是周几实际情况与上面的星期数垂直对齐。 1.5月份:英文显示,注意闰年。 2.1算法设计 将题目分成若干模块或部分、各模块或部分的算法设计 Judge函数判断闰年和每个月份的天数 intjudge(intyear,intmonth)/*定义一个函数,把月分为四类(28,29,30,31)*/ { if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) return(1);/*31天的月份,返回值为1*/ elseif(month==2) { if(year%4!=0||year%100==0&&year%400!=0) return(2);/*平年的2月份,返回值为2*/ elsereturn(3);/*闰年的2月份,返回值为3*/ } elsereturn(4);/*30天的月份,返回值为4*/ } 判断是不是闰年(year%4!=0||year%100==0&&year%400!=0)满足条件就是平年,把一年中的所有月份分为四类(28,29,30,31)。 求出一年中的第一天是周几(year+(year-1)/4-(year-1)/100+(year-1)/400)%7。 有指针数组存放十二个月的英文和星期的英文缩写。 用FOR循环输出各月份的日历 要输入任一年显示出该年的所有月份日期,应该先设计具体的输出格式,如下: 2008年的日历. January SunMonTueWedThuFriSat 12345 6789101112 13141516171819 20212223242526 2728293031 February SunMonTueWedThuFriSat 12 3456789 10111213141516 17181920212223 242526272829 ============================================= 3、根据所选菜单编写相应代码: 1)输入函数while(scanf("%d",&year)!=EOF),输入要查询的年份。 2)输出每个月份的日历 2.2部分模块流程图 2.3N-S图 1.图一 输入的年份判断从定义年到输入的年份中 每个年份是否为闰年 是否 每年为366天每年为365天返回该年的天数图二 输入的年月判断输入年是否为定义年 是否总天数S=1总天数S为定义年到输入年的总天数把S加上该年一月到输入月份的天数,再加1判断输入的月份是否 为闰年中的月份 是否该月是否大于二月 是否把S加上该年一月 到输入月份的天数把S再加上该把S加上该年年一月到输入一月到输入月 的月份的天数份的天数 再加1总天数为S判断S的最后一天为星期几从这一天起依次输出输入月份的天数直到该月底为止 3程序代码设计 判断每个月的天数 intjudge(intyear,intmonth)/*定义一个函数,把月分为四类(28,29,30,31)*/ { if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) return(1);/*31天的月份,返回值为1*/ elseif(month==2) { if(year%4!=0||year%100==0&&year%400!=0) return(2);/*平年的2月份,返回值为2*/ elsereturn(3);/*闰年的2月份