当前位置:文档之家› 用c语言编写万年历程序

用c语言编写万年历程序

《C程序设计》课程设计报告2011-2012学年第二学期设计题目:万年历的设计指导教师:李素若完成时间:2012年6月1日至2011年6月26日第 1 组报告成员成绩评定:分任课教师签字: 2012年6月 21 日目录目录目录 (2)1序言 (3)2设计题目 (3)3问题定义 (4)4总体分析与设计 (5)4.1总体流程图 (5)4.2算法中涉及的知识点 (6)4.3详细设计 (6)5调试与测试 (9)6参考文献 (11)7总结与心得 (11)1 序言我们经过了一个学期的c语言课程的学习,对计算机变成所需的c语言有了大体的了解,能够看懂和编写一些简单的c语言程序,为了更好的加深同学们对c语言的认识,提升同学们的c语言时间编程能力,所以进行了c语言的课程设计。

本程序是一个万年历程序,可以在程序中任意的输入公元年份,通过程序的将该年份的各种信息形象直观的显示出来,达到c语言程序编写所体现的方便快捷的功效。

同时,通过对该程序c语言的编写,能够在训炼我们在课本中学到各种知识点,并将其应用其中。

2 设计题目:1设计编写一个C程序—“万年历”。

2输入任一年将显示出该年的所有月份日期,对应的星期。

3 下一行显示星期,从周日到周六,中英文都可以。

4 下一行开始显示日期从1号开始,并按其是周几实际情况与上面的星期数垂直对齐。

5 月份:中文英文都可以,注意闰年情况。

3 问题定义(或系统分析):1 要输入任一年显示出该年的所有月份日期,应该先设计具体的输出格式,如下:the calendar of the year2008.JanuarySun Mon Tue Wed Thu Fri Sat1 2 3 4 56 7 8 9 10 11 1213 14 15 16 17 18 1920 21 22 23 24 25 2627 28 29 30 31FebruarySun Mon Tue Wed Thu Fri Sat1 23 4 5 6 7 8 910 11 12 13 14 15 1617 18 19 20 21 22 2324 25 26 27 28 29=============================================2 判断是不是闰年(year%4!=0||year%100==0&&year%400!=0)满足条件就是平年,把一年中的所有月份分为四类(28,29,30,31)。

3 求出一年中的第一天是周几(year +(year-1)/4-(year-1)/100+(year-1)/400)%7。

4 有指针数组存放十二个月的英文和星期的英文缩写。

5 用FOR循环输出各月份的日历4 总体设计与详细设计:4.1 总体流程图4.2 算法中涉及的知识点1 定义整型,字符型,指针变量,字符型数组和指针数组。

数组的初始化和引用和指针的使用。

2 函数的定义、声名、调用以及函数的返回值。

3 程序的三种基本结构:顺序,选择,循环。

if语句的嵌套,for语句的嵌套。

4 赋值语句的使用。

5 输入(scanf)输出(printf)函数的应用。

6 算术运算符、关系运算符和逻辑运算符的应用.4.3 详细设计:#include<stdio.h>int judge(int year,int month){if(month==1||month==3||month==5||month==7||month==8||mon th==10||month==12)return(1);else if(month==2){if(year%4!=0||year%100==0&&year%400!=0)return(2);else return(3);}else return(4);}int main(){int year,i,j,a,n,m,k;char ** p;char * week[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};char*month[]={"January","February","March","April","May" ,"June","July","August","September","October","November","D ecember"};printf("please inter the year:");scanf("%d",&year);printf("\n");printf("the calendar of the year%d.",year);printf("\n");a=((year-1)*365+(year-1)/4-(year-1)/100+(year-1)/400+1)%7; for(i=0;i<12;i++){n=judge(year,i+1);p=month+i;printf("%s\n",*p);printf("\n");for(j=0;j<7;j++){p=week+j;printf("%6s",*p);}printf("\n");for(k=0;k<a;k++)printf(" ");for(m=1;m<32;m++){printf("%6d",m);if((a+m)%7==0)printf("\n");if(n==1&&m==31) break;else if(n==2&&m==28) break;else if(n==3&&m==29) break;else if(n==4&&m==30) break;}a=(a+m)%7;printf("\n");printf("============================================");printf("\n");}}5 调试与测试:1.登陆界面图4-1登陆界面提供了四个选项进行选择,并提示输入后的操作方法;2.显示某年全年日历图4-2输入指令后,依次打印出每个月份的日历。

并显示平年或者闰年;3.显示某月日历5 参考文献[1]谭浩强著《C语言程序设计》北京:清华大学出版社 2005[2]百度知道6 总结与心得:1.C语言是目前流行的计算机日历程序,比较典型的是Windows各版本中的日历程序以及基础于该程序所开发的各种应用程序中的日历程序。

然而,这些程序都千篇一律的局限在一个很短的时间范围内。

但是,在很多情况下,特别是在众多的科学研究领域中,一个时间跨度较大的日历程序是很有参考价值的。

C程序设计语言充分发挥了其自身无与伦比的优越性,用极短的程序文本填补了这一领域的空白,同时用铁的事实强有力的告诉世人:C程序设计语言作为计算机语言家族的新生事物,其发展前景是极为广阔的。

2. 经过上一个学期对《C程序设计》的学习,我们学习了理论知识,了解了C语言程序设计的思想,这些知识都为我们的下一步学习打下了坚实的基础。

通过课程设计,一方面是为了检查我们一个学期来我们学习的成果,另一方面也是为了让我们进一步的掌握和运用它,同时也让我们认清自己的不足之处和薄弱环节,加以弥补和加强。

3. 通过对c语言万年历的设计进一步的巩固了用c语言编写程序,并且有利于更好的掌握c语言!4. 在万年历的编写过程中也体会到了做事情一顶要细心、认真。

更加知道了要掌握好基础知识。

还有体会到了成功的感觉!在万年历的设计过程中更加体会到了团队合作的重要性,知道了只有团队合作才会更好的完成设计!也体会到以后在工作中团队合作的必要性和重要性!5. 通过本项课程设计也培养了我独立思考、综合运用所学有关相应知识的能力,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!6. 由于C语言是近年在国内外得到迅速推广应用的一种语言。

C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。

通过这次的c语言程序设计更加了解了c语言的好处和其可用性!7. 在这次课程设计中也知道了自己的动手能力不强有待进一部的提高!在设计过程中不能够把书本上的知识与实践相结合,这也就增加了设计不好该程序的想法!在设计过程中的一次次设计错误增加了我放弃的想法!不过经过大家的努力终于完成了课程设计!完成该程序后想起自己以前的每一次对自己失去信心,就觉得并不是在知识掌握上打败了,而是自己对自己缺乏信心!只要自己对自己不失去信心相信就可以完成那些以前认为完成不了的事情!也让我懂得了要想成功首先就必须有很强的自信心!懂得了自己以后要在做任何事情时都要自信!通过本次课程设计我第一次通过自己的实践对书本上的知识进行了与生活相关的运用,使我受益匪浅,我将不断地学习c语言知识,不断完善自己,提升自己对c语言的理解力。

相关主题