




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 摘要 自从远古开始,我国就有了日历,从石壁到纸质。而到了科技发达的现代,传统日历已经不能满足人们,电子万年历由此而生,万年历有着更长的使用寿命,并且不浪费资源。 电子万年历很好的弥补了传统日历的不足。但是,电子万年历的制作也存在一些问题,闰年闰月的判断,每一个月第一日是星期几的判断,以及万年历的格式该如何分布。在掌握了万年历的推算以后,万年历的制作的迷雾开始解开(详细公式在正文中有),并且很好的解决了闰年闰月的问题。通过几个关键算法的成功推导,万年历实现了它的功能。关键字:万年历,闰年,格式。 前言 C+是一种使用非常广泛的计算机编程语言。C+是一种静态数据类型检查的、支持多重编程方式的通用
2、程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格。其编译器比目前其他计算机语言的编译技术更复杂。2011年8月12日公布最新正式标准c+11。只要随便说出公元几几年几月几日就可以马上算出是星期几。只要计算出日的代码,月份代码,年份代码。三个加起来除以七的余数就是星期几,(如余数是三,则就是星期三)。 日的代码计算:日的代码最简单,就是它本身,是几号就是几。 月份代码计算:月份代码也很简单,下面有十二个数:1 4 4 7 2 5 7 3 6 1 4 6,分别代表一至十二月份每个月的代码。比如,九月份的代码为6。(据来宾介绍,他是用逆推的方法,计算出这
3、12个月份代码的,即知道某年某月某日是星期几,反过来推算月份代码。) 年份代码计算:年份代码相对比较复杂,先记住2000年对应的年份代码是4,这是基础代码,牢记即可。万年历假如大于2000年,比如2010年,则对应的年份代码是(20102000)÷4=22,再用基数代码4减去2倍的商加上余数再加1。即42×2+2+1=3,则2010年对应的年份代码为3。如果没有余数,即润年,则余数后面的1也不用加。比如2008年,对应的年份代码为0。 假如小于2000年,比如1991年,则对应的年份代码是(20001991)÷4=21,再用基数代码4加上2倍的商减去余数。 即4+
4、2×21=7,则1991年对应的年份代码为7。 再记住1个特殊情况,即润年的3到12月份到最后要加1。 举个例子吧,比如1992年8月27日。则(20001992)÷4=20,再4+2×20=8,年份代码计算结果为8,加上8月份的代码3,再加上日的代码27,因为是润年,所以还要加1,等于39。再除以七的余数为4,则这一天为星期四。正文2.1 设计程序的目的和思想 2.1.1 设计程序的目的:(1)加深对讲授内容的理解,尤其是一些语法规定。通过课程设计,自然地、熟练地掌握。(2)熟悉所用的计算机系统的操作方法,也就是熟悉语言程序开发的环境。(3)学会上机调试程序。2
5、.1.2 设计程序的思想:程序设计语言类课程的指导思想是:既能使学生通过学习高级编程语言的知识、编程技术和基本算法,又能掌握程序设计的思想和方法,更具备利用计算机求解实际问题的能力,能灵活运用高级语言进行程序设计。其实认真学习一门语言并不困难,关键要所追求的学习的方法和途径。一条好的途径便于快速掌握,熟悉运用语言。学习的目的在于应用,理论来源于实践,如果在学习中能够通过有效的途径如自己动手设计一个功能比较前大的开发系统,借鉴于各种工具书,善于总结。定可以很好的效果。正是如此,使我们在这几年中对语言学习有了很大提高。通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习C+,还是其它的语言
6、,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。2.2 设计环境对于本次设计的软硬件要求如下:操作系统 Win9x/Me/NT/2000/XP/2003内存容量 512MB显卡要求 集成MX200以上交互工具 鼠标CPU要求 AMD2200+(赛扬2.4GHz)以上硬盘空间 40GB显示器 VGA以上显示器开发软件 Microsoft Visual C+ 6.02.3 设计目的掌握一种编程工具和面向对象程序设计的基本思想和方法,培养我们学生综合利用某种语言进行程序设计的能力,培养我们学生利用系统提供的功能进行创新设计的能力,培养我们学
7、生充分利用计算机的功能和特点分析实际问题及解决实际问题的能力。为我们提供一个综合运用所学知识解决实际问题的机会,增强我们学生的实践动手能力和工程实践能力,并培养和锻炼我们学生的自学创新能力。 为了能更好地了解C+语言,因此开设了此次课程设计,程序设计教学课程的目的不是为了单独的课堂学习,而是要让我们学生掌握程序设计的基本思想及方法。一方面,在课程设计过程中,可以明确的指导为什么而学,还能对所学知识得到应用,更重要的是可以让我们学生掌握一些基本函数的用法,从而不在对编程序感到茫然,经过设计,可以让我们熟悉简单程序的设计方法和编写,对程序设计及该门课程设计语言的应用得到理解。21 要输入任一年显示
8、出该年的所有月份日期,应该先设计具体的输出格式,如下: the calendar of the year2008.January Sun Mon Tue Wed Thu Fri Sat 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31February Sun Mon Tue Wed Thu Fri Sat 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 292 判断是不是闰年
9、(year%4!=0|year%100=0&&year%400!=0)满足条件就是平年,把一年中的所有月份分为四类(28,29,30,31)。23 求出一年中的第一天是周几 (year +(year-1)/4-(year-1)/100+(year-1)/400)%7。24 有指针数组存放十二个月的英文和星期的英文缩写。25 用FOR循环输出各月份的日历2.4 设计流程主要设计流程打印一年日历Void fVoid q主函数大月小月闰年二月输出日历表一月的定义闰二月的定义非闰二月的定义三月四月五月六月七月八月九月十月十一月十二月非闰年二月3. 采用的算法(流程图)输出占六个字节的天
10、数输出六个空格j+,j<7输出星期回车输出月份回车定义整型变year,i=0,j=0,a,n,m=1,k=0和函数judgen=judge(year,i+1),p=month+ii+,i<4定义两个字符型数组,month,week定义一个指针变量*pa=(year+(year-1)/4-(year-1)/100+(year-1)/400)%7开始 Nbreak,退出本次循环n=4&&m=30break,退出本次循环n=3&&m=29break,退出本次循环YYn=2&&m=28输出回车(a+m)%7=0NYY 输入年份,yearm+,
11、m<32k+,k<aN结束 输出”=”a=(a+m)%7回车N 2.5设计内容2.5.1大月和小月的定义void f1(int x) /大月 for( i=0;i<50;i+) ai=33; for(i=k-1;i>=0;i-) ai='000' /1号前均为空格 for(i=k;i<31+k;i+) ai=ai-1+1;主要运用了数组的循环语句进行对大月的定义。void f2(int x) /小月 for( i=0;i<50;i+) ai=33; for(i=k-1;i>=0;i-) ai='000' for(i=k;
12、i<30+k;i+) ai=ai-1+1;依然用数组的循环语句进行对小月的定义。数组的循环语句是C+中一个很重要的知识,数组可以节省很多的定义,一个句子就可以就可以输出很多的数,这样大大减少了计算机的存储空间。这正是一个很打的进步。2.5.2 闰年与非闰年二月的定义void f3(int x) /闰年二月 for( i=0;i<50;i+) ai=33; for(i=k-1;i>=0;i-) ai='000' for(i=k;i<29+k;i+) ai=ai-1+1;void f4(int x) /非闰年二月 for( i=0;i<50;i+) a
13、i=33; for(i=k-1;i>=0;i-) ai='000' for(i=k;i<28+k;i+) ai=ai-1+1; 用两个函数定义了在闰年与非闰年时,二月的不同定义。这主要运用到变量的不同定义。从而分辨出它们的不同,使可打印出任一年的日历。2.5.3日历表的输出int s,count=0; cout<<"请输入年份:" cin>>year; cout<<endl; c=year; for(s=1;s<=year;s+) if(s-1)%4=0&&(s-1)%100!=0)|(s
14、-1)%400=0) count+; day=365*c+count; /相差天数 cout<<"*"<<year<<"年日历*" cout<<endl<<endl<<endl<<endl;在此运用了C+中函数的运算,计算出该年的每月每日的不同。还有一年的输入和输出。在C+语言中,函数的运算又分为很多种,此次用的是在输出时,闰年与非闰年二月的输出法的定义if(year%4=0&&year%100!=0)|year%400=0) /闰年二月 k=(day+3
15、1)%7+6)%7+1; cout<<"二月"<<endl<<endl; f3(k); g(a,50); day=day+31+29; else /非闰年二月 k=(day+31)%7+6)%7+1; cout<<"二月"<<endl<<endl; f4(k); g(a,50); day=day+31+28; 此处主要运用了if语句来对闰年与非闰年的二月的不同定义的输出。if语句一种可跳过不符合条件的语句,继续下面的语句的执行。它具有很强的实用性。在实际的操作中经常会用到的,是一个很
16、重要的知识。2.6关键技术就本程序使用的技术有方面。都是使用的是简单的如if语句,循环语句, 输入和输出,变量的定义,数组的输出。总结1. 程序调试情况; 程序经过多次调试,最终运行正常。输入数据,得出正确结果。2. 本人在程序设计中感想,收获: 通过本次试验设计,我对C语言在编写程序时的用处有了更明确的认识,懂得了编写C程序的一般法方步骤。最大的收获是,编写程序时一定要有信心和勇气,要相信自己一定可以把这个程序编写出来。分析问题做出算法,想好思路,在心里有个大致的框架,然后按部就班的记下自己想到的每一点内容,把写
17、下的东西认真整理,查缺补漏,把一些细节的地方补上,就这样一个貌似很难的程序就写出来了(其实编程并不难,关键是要投入,要钻到里面去)。下一步就是读程序了,读程序时一定要小心仔细,一条语句一条语句的读,看是否能输出自己想要输出的结果,如果发现错误要马上改过来,再接着向下读,直到把程序调试的完美无缺为至。 这次作的这一个设计,虽然我自己觉的很有的成就感,但是这必竟是我第一次作C语言的课程设计,必然会有很多的不足之处有待改进,相信以后我一定会做的更好。效果图刚运行时如:图 1图 1输入2009时,如:图 2图 2运行后如:图3 ,图4 图3图4致谢经过两周的不懈努力,很高兴能完成一个C+编程,紧张的心
18、终于可以平静了。从中体会到以及学习到很多关于C+的很大方面的只是,是我更加了解了C+,并更加熟练了C+。在此次设计中我也遇到了很多的问题,都是经过查看老师所给的关于课程设计书和图书馆借的书才明白所用函数的用法,更重要的是上课时老师的细心教学,使我们学会了许多关于C+的基础知识,为本次的课程设计打好了很好的基础。从而使我能够顺利完成这次课程设计。在本次做课程设计过程中,要感谢张晓刚老师的悉心关照,一直陪伴我们,并为大家讲解不懂的地方,很是辛苦,也很是忙碌。还要感谢学院为我们此次课程设计提供机房,让我们有了良好的学习环境可以利用所学做课程设计,从很大的程度上增强了我们对于C+学习的兴趣。和小组成员
19、一块讨论,多听听别人的想法,想办法改进自己,这是我受益匪浅。只有比较才知道自己的不足。我们一定要好好的改正自己的不足之处,完善自己。不做最好,只做更好!努力在老师规定的时间内完成老师所规定的任务。结束课设的时侯,心里就有一种很渴望但又很害怕的感觉,明白了自己与实际所需的距离,因为现在毕业求职难,特别是对于像自己一般的人,更多的时侯是社会,职业选择自己,而不是更多的自己去选择职业,所以更应该把所学的知识灵活地用于实践,这次课设就是对自己一个很好的锻炼机会,无论任何的偿试,都是自己以后很宝贵的经验,更是对自己的一种充实。参考文献1谭浩强 著.C+面向程序程序设计.北京:清华大学出版社,2006.7
20、2吴乃陵,况迎辉,李海文 著.VC+程序设计.北京:高等教育出版社,2003.83邓宗明,张睿哲,张晓竞,等编著.Visual C+ 6.0 编程实用技术与案例.北京:清华大学出版社,2001.54李海文,吴乃陵 等编C+程序设计及实践教程北京:高等教育出版社,2003.9附录A/打印任意年日历 /已知2000 年1 月1 日为星期六,输入任一年的年份后,打印该年的年历。#include<iostream>#include<cmath>using namespace std;int i,c,day,year,k,a50;void f1(int x) /大月 for( i
21、=0;i<50;i+) ai=33; for(i=k-1;i>=0;i-) ai='000' /1号前均为空格 for(i=k;i<31+k;i+) ai=ai-1+1;void f2(int x) /小月 for( i=0;i<50;i+) ai=33; for(i=k-1;i>=0;i-) ai='000' for(i=k;i<30+k;i+) ai=ai-1+1;void f3(int x) /闰年二月 for( i=0;i<50;i+) ai=33; for(i=k-1;i>=0;i-) ai='0
22、00' for(i=k;i<29+k;i+) ai=ai-1+1;void f4(int x) /非闰年二月 for( i=0;i<50;i+) ai=33; for(i=k-1;i>=0;i-) ai='000' for(i=k;i<28+k;i+) ai=ai-1+1;void g(int y,int z) / 输出日历表 cout<<"日"<<'t'<<"一"<<'t'<<"二"<&l
23、t;'t'<<"三"<<'t'<<"四"<<'t'<<"五"<<'t'<<"六"<<endl; for(i=0;i<50;i+) if(ai=0) cout<<(char)ai<<'t' if(ai!=0&&ai!=33) cout<<ai<<'t' els
24、e ; if(i%7=0) cout<<endl; cout<<endl<<endl<<endl;int main() int s,count=0; cout<<"请输入年份:" cin>>year; cout<<endl; c=year; for(s=1;s<=year;s+) if(s-1)%4=0&&(s-1)%100!=0)|(s-1)%400=0) count+; day=365*c+count; /相差天数 cout<<"*"
25、<<year<<"年日历*" cout<<endl<<endl<<endl<<endl; k=(day%7+6)%7+1; cout<<"一月"<<endl<<endl; f1(k); g(a,50); if(year%4=0&&year%100!=0)|year%400=0) /闰年二月 k=(day+31)%7+6)%7+1; cout<<"二月"<<endl<<endl; f3(k); g(a,50); day=day+31+29; else /非闰年二月 k=(day+31)%7+6)%7+1; cout<<"二月"<<endl<<endl; f4(k); g(a,50); day=day+31+28; k=(day%7+6)%7+1; cout<<"三月"<<endl<<endl; f1(k); g(a,50); k=(day+31)%7+6)%7+1; cout<<"四月"<<e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 360度评估报告(模板)
- 2025年中国移动电竞行业市场评估分析及发展前景调研战略研究报告
- 2021-2026年中国格列齐特缓释片市场发展前景预测及投资战略咨询报告
- 2025至2030年四节铝合金炮台支架项目投资价值分析报告
- 《第一单元 寻找美丽声音 2 美妙声音自己录》教学设计-2024-2025学年泰山版信息技术六年级上册
- 2025至2030年乔其绒项目投资价值分析报告
- 2025至2030年中国活动字母箱数据监测研究报告
- 建筑保修合同范本
- 2025至2030年中国水溶硅油数据监测研究报告
- 顶名借款合同范本
- MLL基因重排成人急性B淋巴细胞白血病和急性髓系白血病临床特征及预后危险因素分析
- 雅思学习证明范本范例案例模板
- 磁共振成像(MRI)基本知识及临床应用
- 产品不良品(PPM)统计表格模板
- 品管圈PDCA提高手卫生依从性-手卫生依从性品
- 2023年广州市青年教师初中数学解题比赛决赛试卷
- 对折剪纸课件
- 公园栈道栈桥施工方案
- 新中国成立后的中国国防
- 热烈欢迎领导莅临指导ppt模板
- 不规则抗体筛查与鉴定
评论
0/150
提交评论