C语言万年历课程设计报告书_第1页
C语言万年历课程设计报告书_第2页
C语言万年历课程设计报告书_第3页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、C语言课程设计报告书万年历系统设计学院:理学院专业:信息与计算科学姓名:指导教师:序百经过一个学期对C程序设计的学习,同学们都认为真正的学到了有用知识,可能有一些人学的不够理想,但无论如何,这些知识都为我们的下一步学习打下了坚实的基础。做这么一个课程设计,一方面是为了检查我们一个学期来我们学习的成果,另一方面也是为了让我们进一步的掌握和运用它,同时也让我们认清自己的不足之处和薄弱环节,加以弥补和加强。本程序是一个万年历程序,可以查询1970年1月1日到2100年1月1日中任意一天是星期几,只要在运行程序时按照要求输入年,月,日,程序就会把这一天是星期几显示子啊屏幕上;也可以输入一个年份和一个月

2、份,程序就会把该月份的月历显示在屏幕上,使人一目了然。该程序能与目前天文学研究中所采用的各种日历程序所能计算的结果相一致。还有许多功能等着你去探讨。这个程序花费了很多时间,用了一天的时间去设计程序和调试程序,而在调试程序的过程中,经常会出现一些不如意的地方,所以程序就要修改。所以这样经过一次乂一次的修改之后,程序更显得人性化。通过这一次程序的设计,让我深深的感受到程序员的辛苦。2012年6月11日【课程设计题目:万年历系统】1:程序的功能多样;2:输入日期能够判断该日期是星期几;3:输入一个年份能够显示出该年的全部月历;4:输入一个年月能够显示该月的月历;5:输入一个年份能够判断该年是闰年还是

3、平年;6:能够退出。退出程序【系统功能模块图】主要功能模块1:输入year,month,day计算month与当年的1月间隔了多少大rr=r+(year/4)*1461+(year%4)*365+dayr=r%7r=0r=1r=2r=3r=4r=5r=6SatSunMonTueWedThuFirY或y返回菜单其他输入均退出程序代码:(printf("pleaseinputthedayyouwant(2100,1,1>*,*,*>1970,1,1):");scanf("%d,%d,%d",&year,&month,&da

4、y);for(b=0,r=0;b<month;b+)(r=ab+r;year=year-1972;r=r+(year/4)*1461+(year%4)*365+day;TodayisSaturday.n");TodayisSunday.n");TodayisMonday.n");TodayisTuesday.n");TodayisWednesday.n");TodayisThursday.n");TodayisFirday.n");if(r%7=0)printf("elseif(r%7=1)printf(&q

5、uot;elseif(r%7=2)printf("elseif(r%7=3)printf("elseif(r%7=4)printf("elseif(r%7=5)printf("elseprintf("choose=getchar();printf("Continue(y/n):n");scanf("%c",&choose);if(choose='y'|choose='Y')main();主要功能模块2:把S加上该年一月到输入月份的天数,再加1判断输入的月份是否为闰年

6、中的月份:该月是耳是r大丁二少/把S加上该年一月到输入月份的天数四S再加上该«一月到输入勺月份的大数有加1把S加上该年一月到输入月份的大数总天数为S判断S的最后一天为星期几从这一定依次输出输入月份的大数直到该月底为止程序代码:(staticintt12=31,0,31,30,31,30,31,31,30,31,30,31;inti,y,weekday=0;longdays=0;if(leap_year(year)t1=29;elset1=28;y=tmonth-1;if(year>2006)days=(year-2006)*365+count_leap(year)+monthd

7、ays(month,year);weekday=days%7;elseif(year<2006)days=(2005-year)*365+count_leap(year)+monthdays(month,year);weekday=7-days%7;elsedays=monthdays(month,year);weekday=days%7;for(i=1;i<weekday+2;i+)printf("t");for(i=1;i<=y;i+)if(i+weekday-1)%7=0)printf("nt%3dt",i);elseprintf

8、("%3dt",i);主要功能模块3:输入的年份判断从定义年到输入的年份中每个年份是否为闰年闰年每年为366天平年每年为365天返回该年的天数程序代码:inti;if(year%4=0&&year%100!=0|year%400=0)i=1;elsei=0;returni;【用到的语句】<stdio.h>,<conio.h>main()printf(),scanf()a6.if语句for语句void/*/*/*/*头文件*/主函数*/数组*/要调用到的函数*/【源程序代码】#include<stdio.h>/主函数#inc

9、lude<conio.h>intmain()intleap_year(inty);intcount_leap(intyear);intmonthdays(intmonth,intyear);voidmonthprint(intyear,intmonth);intyear,month,day,b,r,number;/定义变量charchoose;inta=0,31,28,31,30,31,30,31,31,30,31,30,31;1:riqi>>>xingqiji.n");2:yueli.n");3:rili.n");4:runnian

10、panduan.n");5:exitn");printf("*mainMeun*n");printf("printf("printf("printf("printf("printf("n");printf("*npleaseinputthenumber:");");printf("scanf("%d",&number);if(number=1)printf("pleaseinputthedayyouwant(

11、2100,1,1>*,*scanf("%d,%d,%d”,&year,&month,&day);for(b=0,r=0;b<month;b+)r=ab+r;year=year-1972;r=r+(year/4)*1461+(year%4)*365+day;了多少天if(r%7=0)printf("elseif(r%7=1)printf("elseif(r%7=2)printf("elseif(r%7=3)printf("elseif(r%7=4)printf("elseif(r%7=5)printf

12、("elseprintf("choose=getchar();printf("Continue(y/n):n");scanf("%c",&choose);if(choose='y'|choose='Y')main();elseif(number=2)printf("scanf("%d",&year);for(month=1;month<13;month+)printf(",*,*>1970,1,1):");/输入要查询的日期/

13、计算输入月份与但年月份间隔了多少天计算输入日期与1970,1,1间隔TodayisSaturday.n");TodayisSunday.n");TodayisMonday.n");TodayisTuesday.n");TodayisWednesday.n");TodayisThursday.n");TodayisFirday.n");/选择是否继续/主函数调用主函数本身pleaseinputtheyear(5000>*>0):");/输入要查询的年份循环输出12个月份的月历%dyear%dmonthn”

14、,year,month);printf("*n")printf("SunMonmonthprint(year,month);printf("n");TueWenThuFriSatn");printf('、*n")Jchoose=getchar();printf("Continue(y/n):nn");scanf("%c",&choose);if(choose='y'|choose='Y')main();elseif(number=3)pr

15、intf("pleaseinputtheyearandmonth(2100,1>*,*>1970,1):");scanf("%d,%d",&year,&month);/输入要查询的年,月printf("%dyear%dmonthn",year,month);printf("*n");printf("SunMonTueWenThumonthprint(year,month);printf("n");TueWenFri/Satn");printf(&q

16、uot;*n");choose=getchar();printf("Continue(y/n):nn");scanf("%c”,&choose);if(choose='y'|choose='Y')main();elseif(number=4)printf("pleaseinputayear5000>*>0:");输入要查询的年份scanf("%d”,&year);if(leap_year(year)printf("Thisisrunyear.n"

17、);elseprintf("Thisispingyear.n");choose=getchar();printf("Continue(y/n):nn");scanf("%c",&choose);/选择其他则退出/判断是否闰年if(choose='y'|choose='Y')main();elsereturn0;intleap_year(intyear)inti;if(year%4=0&&year%100!=0|year%400=0)i=1;elsei=0;returni;intc

18、ount_leap(intyear)inti=0,j,min,max;if(year>2006)min=2006;max=year;elsemin=year+1;max=2006;for(j=min;j<max;j+)if(leap_year(j)i+;returni;/该月的天数intmonthdays(intmonth,intyear)intsum=0,i,j;if(year>=2006)staticintt12=31,0,31,30,31,30,31,31,30,31,30,31;j=month-1;if(leap_year(year)t1=29;elset1=28;f

19、or(i=0;i<j;i+)sum=sum+ti;elsestaticintt112=31,30,31,30,31,31,30,31,30,31,0,31;j=12-month;if(leap_year(year)t110=29;elset110=28;for(i=0;i<=j;i+)sum=sum+t1i;returnsum;voidmonthprint(intyear,intmonth)/输出该月的月历staticintt12=31,0,31,30,31,30,31,31,30,31,30,31;inti,y,weekday=0;longdays=0;if(leap_year(

20、year)t1=29;elset1=28;y=tmonth-1;if(year>2006)days=(year-2006)*365+count_leap(year)+monthdays(month,year);weekday=days%7;elseif(year<2006)days=(2005-year)*365+count_leap(year)+monthdays(month,year);weekday=7-days%7;elsedays=monthdays(month,year);weekday=days%7;for(i=1;i<weekday+2;i+)/输出该月第一天

21、所在位置之前的空格printf("t");for(i=1;i<=y;i+)输出该月的月历if(i+weekday-1)%7=0)printf("nt%3dt",i);elseprintf("%3dt",i);【调试及分析过程】1:在代码编辑器上输入以上程序代码后,保存并f9到tc3.0上运行结果输出:分析:运行后出现“菜单”,选项意思是:输入1,则确定一个日期是星期几。输入2,则是查询某年的12个月历。输入3,则是查询某年某月的月历。4,则是判断输入年是闰年还是平年。5,退出。2:选择1后,再根据提示输入*,*,*:2011,10,28结果输出:分析:输入你要查询的年月日后,程序会经过计算输出该日的星期号。然后,输出结果后,系统会询问你是否继续,输入y或丫,继续;输入N或n或其他字母都会直接退出。3:选择y后结果输出:4:选择2后,再根据提示输入你想查询的年份*:2012结果输出:分析:输入你要查询的年份后,系统会经过计算得出每月的月历,然后输出。但因为输出窗口限制,结果只能看到部分。同样的,输出结果后,系统仍然会询问是否继续。5:选择3后,再根据提示输入你要查询的月份*,*:2012,6结果输出:分析:输入你要查询的月份后,系统会经过计算得出该月的月历图,然后输出。同

温馨提示

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

评论

0/150

提交评论