用C语言编写一个年历_第1页
用C语言编写一个年历_第2页
用C语言编写一个年历_第3页
用C语言编写一个年历_第4页
用C语言编写一个年历_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、黑龙江八一农垦大学理学院C程序设计课程设计报告2011-2012学年第二学期设计题目:用C语言设计一个年历系统指导教师:魏老师完成时间:2012年6月13日至2012年6月20日第一组报告成员姓名专业班级学号Student1信息与计算科学201X40X1000Student2信息与计算科学201X40X1000Student3信息与计算科学201X40X1000Student4信息与计算科学201X40X1000Student5信息与计算科学201X40X1000成绩评定:分任课教师签字:2012年6月20日目录目录1、程序设计与分析-2-1、功能分析与任务分配-2-2、流程图-.2-3、数据

2、结构-.4-2、详细设计-5-3、参考文献-7-4、附录-8-5、总结-9-第1页共10页1、程序设计与分析1、功能分析与任务分配(一)功能分析:1、要输入任一年显示出该年的所有月份日期,应该先设计具体的输出格式,如下:thecalendaroftheyear2012.JanuarySunMonTueWedThuFriSat123456789101112131415161718192021222324252627282930312、判断是不是闰年(year%4!=0|year%100=0&year%400!=0)满足条件就是平年,把一年中的所有月份分为四类(28,29,30,31)。3、求出一

3、年中的第一天是周几(year+(year-1)/4-(year-1)/100+(year-1)/400)%74、有指针数组存放十二个月的英文和星期的英文缩写。5、用FOR循环输出各月份的日历(二)任务分配:1、Student1:程序综合整理2、Student2:判断闰年程序编写3、Student3:月份循环程序编写4、Student4:主函数程序编写5、Students天数循环程序编写2、流程图1)整个函数流程图:3、数据结构1)整型:intjudge(intyear,intmonth)intyear,i,j,a,n,m,k;2)字符型:char*p;3)字符型数组:week=Sun,MonT

4、TueTWedTThuTFriTSat;month=January,February,March,April,May,June,July,August,SeptemberH,HOctoberH,HNovemberH,HDecemberH;4)指针数组:char*week=Surr,MonTTue,WedTThuTFriTSat;char*month=January,February,March,April,May,June,July,August,September,October,November,December;2、详细设计想要编写一个万年历程序,按其要求输出相应的功能。1)首先,需要对

5、任一输入年份进行判断,判断其是平年还是闰年:if(month=1|month=3|month=5|month=7|month=8|month=10|month=12)return(1);elseif(month=2)if(year%4!=0|year%100=0&year%400!=0)return(2);elsereturn(3);elsereturn(4);即当上式返回值为2的时候,为平年;否则,为闰年。然后,判断这一年的月份,将其分为4种类型,即:天数为31天的月份、天数为28天的月份、天数为29天的月份,和天数为30天的月份:对应的函数返回值,分别为:n=1,n=2,n=3,n=4。将

6、以上几部分,综合整理为一个判断函数,其程序为:intjudge(intyear,intmonth)/定义judge函数if(month=1|month=3|month=5|month=7|month=8|month=10|month=12)/天数为31天的月份return(1);elseif(month=2)if(year%4!=0|year%100=0&year%400!=0)/判断闰年return(2);elsereturn(3);elsereturn(4);2)接下来,定义主函数。在这一部分,有一个地方非常关键,那就是对任一年第一天是星期几的判断:a=(year+(year-1)/4-(

7、year-1)/100+(year-1)/400)%7;即,计算后a值为0、1、2、3、4、5、6,分别对应周日、周一、周二、周三、周四、周五、周六。3)然后就是对任一年,月份、星期,和天数的循环:for(i=0;i12;i+)/月份循环(n=judge(year,i+1);/判断情况,为下程序做准备p=month+i;/指向指针变量的指针,月份输出printf(%sn,*p);printf(n);for(j=0;j7;j+)/星期循环(p=week+j;printf(%6s,*p);printf(n);for(k=0;ka;k+)printf();for(m=1;m32;m+)/每月天数循环

8、(printf(%6d,m);if(a+m)%7=0)printf(n);/满星期换行a=(a+m)%7;/a为下个月所对应的星期printf(n);printf(=);printf(n);4)最后,输入任一年份,依次执行程序,输出结果。以2012年为例:i=i回.a”口:式一程序1。皿厚书口色图历隹崖序pleasetheyear2012thecalendaroftheyeai2012JanuaryMarcti窑mnMonTueUedThttFl123:3、参考文献1刘明,夏清国.C程序设计(三导丛书)M.西安:西北工业大学出版社,2003,1-380.2谭浩强.C程序设计(第四版)M,中国高

9、等院校计算机基础教育课程体系规划教材,2010,066130(1):1-330.4、附录#includeintjudge(intyear,intmonth)/定义judge函数if(month=1|month=3|month=5|month=7|month=8|month=10|month=12)/天数为31天的月份return(1);elseif(month=2)if(year%4!=0|year%100=0&year%400!=0)判断闰年,真为平年return(2);elsereturn(3);elsereturn(4);intmain()intyear,i,j,a,n,m,k;/定义变

10、量char*p;/指向指针的指针变量char*week=Sun,MonTTue,WedTThuTFriTSat;char*month=January,February,March,April,May,June,July,August,SeptemberTOctoberTNovember,December;printf(pleaseintertheyear:);输入所求年份scanf(%d”,&year);printf(n);printf(thecalendaroftheyear%d.”,year);printf(n);a=(year+(year-1)/4-(year-1)/100+(year-

11、1)/400)%7;判断每年的第一天是周几当a值为0的时候,对应周日for(i=0;i12;i+)/月份循环n=judge(year,i+1);/调用函数,n值为1234,代表每月为多少大p=month+i;/数组名为首地址,力口i循环printf(%sn,*p);/输出月份名printf(n);for(j=0;j7;j+)/星期循环p=week+j;/数组名为首地址,加j循环printf(%6s,*p);)printf(n);for(k=0;ka;k+)printf();for(m=1;m32;m+)printf(%6d,m);if(a+m)%7=0)printf(n);/.六列,字符串输出

12、/a代表每年第一天,后为每月前空格天数/输出六个空格/每月天数循环/输出格式占六列,右端对齐/满星期换行if(n=1&m=31)break;从此处至以下执行整月停止elseif(n=2&m=28)break;elseif(n=3&m=29)break;elseif(n=4&m=30)break;)a=(a+m)%7;/a为每月末行天数);printf(n);printf(=printf(n);5、总结通过本次课程设计我们第一次通过自己的实践对书本上的知识进行了与生活相关的运用。在这个程序中,主要应用了这学期所学习的循环,条件语句,数组以及调用函数。这些知识的应用使我们对课本内容的认识得到了加深。在编写程序的过程中,也出现了很多错误。比如程序语句错误导致检测时连续报错;函数语句编写错误导致输出结果与实际不符等。出现这些情况

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论