- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
高斯日记问题
算法的研究、设计与实现
----------------高斯日记问题的求解
一、引言
最初算法这个术语是对一种人类思维方式的定义,即从具体的操作规范入手,通过操作过程的构造与实施来解决给定问题的思维方法。这表明,算法既可以用来描述人解决给定问题的操作过程,也可以用来描述计算机解决给定问题的操作过程,后者正是我们编写程序的基础,是计算科学意义下的算法。
二、目的
1.?巩固和加深学生对算法分析课程基本知识的理解和掌握;
2.?培养利用算法知识解决实际问题的能力;
3.?掌握利用程序设计语言进行算法程序的开发、调试、测试的能力;
4.?掌握书写算法设计说明文档的能力;
5.?提高综合运用算法、程序设计语言的能力。
三、问题描述
高斯日记
大数学家高斯有个好习惯:无论如何都要记日记。
他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210.后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢? 高斯出生于:1777年4月30日,在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791年12月15日。高斯获得博士学位的那天日记上标着:8113。
请你算出高斯获得博士学位的年月日,提交答案的格式是:yyyy-mm-dd, 例如:1980-03-21
四、算法设计
1、刚开始看到题目 ,我认真想了想,题目分析如下:
1778不是闰年,所以 8113 - 365= 7748,1779也不是闰年,所以再减365得7383,
1780是闰年,所以减去366得7017,又1781,1782,1783,肯定都不是所以连减3个365得5922,然后又是闰年,-366,再-365 - 365-365 -366-365-365 -365 -366 -365-365......-365-366 -365-365 -365
到1799 得?78,即这一天是1799年4月30日之后的78天,
5月31天,-31,6月30天,-30,剩17天,
此时即加上两个月,为1799年6月30日,然后往后数17天,即为1799年7月16日。??注意这里,6月30日,往后数17天得到的是7月16日,所以说他是从6月30日开始数起的,高斯出生的那天过去了,也算是一天。
整理变成代码,发现只需要解决三个问题,应该基本上就可以了,第一个问题是闰年的判断,第二个问题是各月份的天数,最后一个问题也是最关键的问题就是如何计算天数从而得到最后的答案,所以我打算用三个函数来解决。
2框图
main()
Afterxdays()
Daysofmonth()
Leapyear()
3、流程图
开始
输入x
1→i
ix
N
Y
day!=daysofmonth()
N
Y
month!=12
day+1→day
N
Y
year+1→year
1→month=day
month+1→month
1→day
i+1→i
输出year,month,day
结束
4、伪代码
#define true 1
#define false 0
int leapyear(int year) //闰年的判断
{ if(year%400==0||year%4==0year%100!=0)
return(true);
else
return(false);
}
这是判断闰年的函数的代码,我们很容易知道闰年的条件是能被4整除,但不能被100整除的年份是闰年,或者能被400整除的年份也是闰年,知道了这些条件,使用if语句就能简单的把这个函数写出来了。
int daysofmonth(int year,int month,int day) //各月份的天数
{ int a[4]={28,29,30,31};
switch(month)
{ case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
您可能关注的文档
最近下载
- 2025年初级钳工试题及答案钳工试题(含答案).docx VIP
- 四川省成都市新都区新都一中学实验学校2024−2025学年上学期新七年级分班(奖学金)模拟 数学提高试题(含解析).docx VIP
- 2024新疆职业大学招聘笔试真题带答案详解.docx VIP
- Unit 10 Baggage Service课件pptj电子教案.pptx VIP
- 易中天《先秦诸子百家争鸣》(cctv百家讲坛全六部共36集).pdf VIP
- 民航服务英语unit 3 baggage service课件讲解.ppt VIP
- 预防高处坠落培训.pptx VIP
- 脊髓损伤的诊治指南.pdf
- 2025年起重机司机(限桥式起重机)Q2特种设备理论必背考试题库资料(附答案).pdf VIP
- 抛体运动题目.doc VIP
文档评论(0)