登入帳戶  | 訂單查詢  | 購物車/收銀台(0) | 在線留言板  | 付款方式  | 聯絡我們  | 運費計算  | 幫助中心 |  加入書簽
會員登入   新用戶註冊
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類閱讀雜誌 香港/國際用戶
最新/最熱/最齊全的簡體書網 品種:超過100萬種書,正品正价,放心網購,悭钱省心 送貨:速遞 / 物流,時效:出貨後2-4日

2024年10月出版新書

2024年09月出版新書

2024年08月出版新書

2024年07月出版新書

2024年06月出版新書

2024年05月出版新書

2024年04月出版新書

2024年03月出版新書

2024年02月出版新書

2024年01月出版新書

2023年12月出版新書

2023年11月出版新書

2023年10月出版新書

2023年09月出版新書

『簡體書』程序设计导引及在线实践(第2版)

書城自編碼: 2927762
分類: 簡體書→大陸圖書→教材研究生/本科/专科教材
作者: 李文新、郭炜、余华山
國際書號(ISBN): 9787302452348
出版社: 清华大学出版社
出版日期: 2017-01-01
版次: 2 印次: 1
頁數/字數: 270/433000
書度/開本: 16开 釘裝: 平装

售價:NT$ 252

我要買

share:

** 我創建的書架 **
未登入.



新書推薦:
中国古代文体形态研究(第四版)(中华当代学术著作辑要)
《 中国古代文体形态研究(第四版)(中华当代学术著作辑要) 》

售價:NT$ 765.0
朋党之争与北宋政治·大学问
《 朋党之争与北宋政治·大学问 》

售價:NT$ 454.0
甲骨文丛书·波斯的中古时代(1040-1797年)
《 甲骨文丛书·波斯的中古时代(1040-1797年) 》

售價:NT$ 403.0
以爱为名的支配
《 以爱为名的支配 》

售價:NT$ 286.0
台风天(大吴作品,每一种生活都有被看见的意义)
《 台风天(大吴作品,每一种生活都有被看见的意义) 》

售價:NT$ 245.0
打好你手里的牌(斯多葛主义+现代认知疗法,提升当代人的心理韧性!)
《 打好你手里的牌(斯多葛主义+现代认知疗法,提升当代人的心理韧性!) 》

售價:NT$ 301.0
新时代硬道理 广东寻路高质量发展
《 新时代硬道理 广东寻路高质量发展 》

售價:NT$ 352.0
6S精益管理实战(精装版)
《 6S精益管理实战(精装版) 》

售價:NT$ 458.0

建議一齊購買:

+

NT$ 338
《 农学概论 》
+

NT$ 324
《 大学生心理健康教育课堂互动手册 》
+

NT$ 623
《 应用光学(第4版) 》
+

NT$ 351
《 统计学原理(第三版) 》
+

NT$ 605
《 药理学(第八版/本科临床/十二五规划教材) 》
+

NT$ 340
《 商务谈判 》
編輯推薦:
本书的*特点是和北京大学程序在线评测系统紧密结合,具有极强的实践性。北京大学程序在线评测系统Peking University Online Judge System,POJ是一个免费的公益性网上程序设计题库,网址为http:acm.pku.edu.cnJudgeOnline注意这里的网址区分大小写。它包含2000多道饶有趣味的程序设计题目,题目大部分来自ACMICPC国际大学生程序设计竞赛,很多题目就反映工作和生活中的实际问题。这些题目有易有难,比如*简单的题A B Problem就是给出两个数,输出它们的和。用户可以针对某个题目编写程序并提交,POJ 会自动判定程序的对错。本书的所有例题和课后习题大都精选自POJ题库,难度较低,学生做习题时可以将自己的程序提交给POJ,几秒钟之内即可知道是对还是错。作为教学支持,每位学生在POJ上可以建立自己的账号,教师在POJ上一眼就能看到学生是否已经完成布置的习题,这几乎将教师评判学生作业的工作量减少到零。POJ对于程序的正确性评判是极为严格的,学生的程序根据POJ给出的输入数据进行计算并输出结果,POJ在服务器端编译、运行学生提交的程序,取得
內容簡介:
本书是北京大学程序设计实习课程的内容和北京大学程序在线评测系统(POJ)的紧密结合,具有极强的实践性。本书的例题和习题精选自POJ题库,并且在叙述中穿插了许多精心编写的思考题,总结了学生在程序设计中易犯的错误。本书的作者均有丰富的工程软件开发经验和教学经验,因此本书中的程序代码均保持良好的风格。
本书可以作为高等学校理工科相关专业程序设计类课程的教材,也可作为以 ACMICPC为代表的大学生程序设计竞赛的培训教材,还可供对程序设计感兴趣的读者学习参考。本书封面贴有清华大学出版社防伪标签,无标签者不得销售。
目錄
目录CONTENTS第1章CC语言概述1
1.1程序的基本框架1
1.2变量2
1.2.1变量的定义2
1.2.2变量的赋值3
1.2.3变量的引用3
1.3CC语言的数据类型3
1.4常量5
1.5运算符和表达式6
1.5.1算术运算符6
1.5.2赋值运算符8
1.5.3关系运算符8
1.5.4逻辑运算符9
1.5.5位运算符9
1.5.6sizeof运算符12
1.5.7类型强制转换运算符13
1.5.8运算符的优先级13
1.6注释14
1.7分支语句15
1.7.1if语句15
1.7.2switch语句17
1.8循环语句19
1.8.1for语句19
1.8.2while语句20
1.8.3dowhile语句20
1.8.4break语句21
1.8.5continue语句21
1.9函数22
1.9.1函数的定义22
1.9.2函数的调用23
1.9.3参数传递和返回值24
1.9.4库函数和头文件25
1.10标准输入输出25
1.10.1printf函数(标准输出函数)25
1.10.2scanf函数(标准输入函数)26
目录第 11 章程序设计导引及在线实践第2版1.11全局变量和局部变量27
1.12数组28
1.12.1一维数组28
1.12.2二维数组30
1.12.3数组的初始化31
1.12.4数组越界32
1.13字符串33
1.13.1字符串常量33
1.13.2用字符数组存放的字符串34
1.14指针36
1.14.1指针的基本概念36
1.14.2指针运算39
1.14.3空指针40
1.14.4指向指针的指针41
1.14.5指针和数组41
1.14.6字符串和指针43
1.14.7void指针44
1.14.8函数指针45
1.14.9指针和动态内存分配47
1.14.10误用无效指针50
1.15结构50
1.15.1结构的概念50
1.15.2结构变量的定义51
1.15.3访问结构变量的成员变量52
1.15.4结构变量的初始化52
1.15.5结构数组52
1.15.6指向结构变量的指针53
1.15.7动态分配结构变量和结构数组55
1.16文件读写55
1.16.1用fopen打开文件56
1.16.2用fclose关闭文件56
1.16.3用fscanf读文件,用fprintf写文件57
1.16.4用fgetc读文件,用fputc写文件58
1.16.5用fgets函数读文件,fputs函数写文件59
1.16.6用fread读文件,用fwrite写文件60
1.16.7用fseek改变文件读写的当前位置63
1.17C语言标准库函数64
1.17.1数学函数64
1.17.2字符处理函数65
1.17.3字符串处理和内存操作函数65
1.17.4字符串转换函数66
1.18命令行参数66
1.19CC编码规范67
1.19.1标识符命名注意事项68
1.19.2程序的书写格式68
1.19.3注释的写法70
1.19.4一些好的编程习惯71
第2章简单计算题73
2.1例题: 鸡兔同笼73
2.2例题: 棋盘上的距离74
2.3例题: 校门外的树77
2.4例题: 填词78
2.5例题: 装箱问题80
练习题82
第3章数制转换问题85
3.1相邻数字的基数等比: 确定进制85
3.2相邻数字的基数不等比: skew数87
练习题89
第4章字符串处理90
4.1简单的字符串操作示例90
4.2例题: 统计字符数91
4.3例题: 487327993
4.4例题: 子串96
4.5例题: Caesar密码99
练习题101
第5章日期和时间处理104
5.1例题: 判断闰年104
5.2例题: 细菌繁殖107
5.3例题: 日历问题112
5.4例题: 玛雅历113
5.5例题: 时区间时间的转换116
练习题120
第6章模拟121
6.1例题: 约瑟夫问题121
6.2例题: 花生问题123
6.3例题: 显示器126
6.4例题: 排列130
练习题133
第7章高精度计算136
7.1例题: 大整数加法136
7.2例题: 大整数乘法138
7.3例题: 大整数除法141
7.4例题: 麦森数145
练习题148
第8章枚举149
8.1枚举的基本思想149
8.2简单枚举的例子: 生理周期150
8.3数学模型中包括多个变量的例子: 称硬币151
8.4搜索空间中解不唯一的例子: 完美立方154
8.5遍历搜索空间的例子: 熄灯问题156
8.6优化判断条件的例子: 讨厌的青蛙160
练习题165
第9章递归167
9.1递归的基本思想167
9.2例题: 全排列168
9.3例题: 八皇后问题170
9.4例题: 逆波兰表达式174
9.5例题: 四则运算表达式求值175
9.6例题: 放苹果179
9.7例题: 简单的整数划分问题180
9.8例题: 算24181
9.9例题: 红与黑184
9.10例题: 二叉树186
9.11例题: 拯救少林神棍187
练习题193
第10章动态规划196
10.1什么是动态规划196
10.2动态规划解题的一般思路199
10.3例题: 最长上升子序列200
10.4例题: 帮助Jimmy202
10.5例题: 最长公共子序列206
10.6例题: 神奇口袋208
10.7例题: 灌溉草场210
10.8例题: 方盒游戏215
10.9例题: 美妙栅栏221
练习题225
第11章链表228
11.1单向链表、链表结点的插入228
11.2带表头的单向链表、链表的搜索232
11.3双向链表、链表结点的排序235
11.4循环链表、链表结点的删除238
11.5链表的应用: 计算每个作业的运行时间241
练习题247
第12章二叉树249
12.1二叉树的建立250
12.2基于递归的二叉树遍历254
12.3平衡二叉树257
练习题263
附录A北京大学程序在线评测系统介绍264
A.1POJ的使用情况264
A.2POJ的主要功能265
A.3使用本书结合POJ进行教学时的用法266
附录B本书题目在POJ上的编号267
致谢271
內容試閱
主任: 李晓明副主任: 蒋宗礼卢先和委员: (按姓氏笔画为序)马华东马殿富王志英王晓东宁洪刘辰孙茂松李仁发李文新杨波吴朝晖何炎祥宋方敏张莉金海周兴社孟祥旭袁晓洁钱乐秋黄国兴曾明廖明宏秘书: 张瑞庆
本书主审: 李晓明
本 书 序PREFACE
本书是一本与众不同的程序设计入门教材,实践性极强,不论对于高等学校计算机专业的学生,还是非计算机专业的学生,都非常适用。目前绝大部分程序设计入门教材的主要内容就是详细介绍一门程序设计语言,这对于高等学校计算机专业的学生是远远不够的;对于非计算机专业的学生也略显肤浅。许多大学本科计算机专业的课程设置,在程序设计语言和数据结构这两门课之间,并无空间进行基础算法的教学,这就容易导致学生由于基本技能缺失而在学习数据结构课程时产生困难,或难以学精。对于非计算机专业的学生来说,如果仅掌握一门程序设计语言的语法规则,写几个打印由星号组成的三角形之类的玩具程序,而对计算机科学的基础与灵魂算法一无所知,不明白计算机到底是怎么解决问题的,那么在日后的工作中,不但不可能自己编写实用程序,甚至不能敏感地及时意识到哪些问题适合用计算机处理,可以交给计算机专业人士来做。本书将程序设计语言和最基本的算法思想相结合,能够有效避免上述现象。本书的最大特点是和北京大学程序在线评测系统紧密结合,具有极强的实践性。北京大学程序在线评测系统Peking University Online Judge System,POJ是一个免费的公益性网上程序设计题库,网址为http:acm.pku.edu.cnJudgeOnline注意这里的网址区分大小写。它包含2000多道饶有趣味的程序设计题目,题目大部分来自ACMICPC国际大学生程序设计竞赛,很多题目就反映工作和生活中的实际问题。这些题目有易有难,比如最简单的题A B Problem就是给出两个数,输出它们的和。用户可以针对某个题目编写程序并提交,POJ 会自动判定程序的对错。本书的所有例题和课后习题大都精选自POJ题库,难度较低,学生做习题时可以将自己的程序提交给POJ,几秒钟之内即可知道是对还是错。作为教学支持,每位学生在POJ上可以建立自己的账号,教师在POJ上一眼就能看到学生是否已经完成布置的习题,这几乎将教师评判学生作业的工作量减少到零。POJ对于程序的正确性评判是极为严格的,学生的程序根据POJ给出的输入数据进行计算并输出结果,POJ在服务器端编译、运行学生提交的程序,取得输出结果和标准答案对比,必须一个字节都不差,程序才能够通过。这对于培养严谨、周密的程序设计作风极为有效,学生必须考虑到每一个细节和特殊边界条件,而不是大体上正确就能够通过。传统的人工评判是难以做到这一点的。本书的另一特点是在叙述中穿插了许多精心编制的思考题,特别适合教师进行启发式教学。思考题没有答案,以便教师引导学生进行讨论。程序设计导引及在线实践第2版本书还有一个亮点,就是在许多例题后都会总结学生在完成该题时容易犯的典型错误,让学生少走弯路。这些错误都总结自学生在POJ上提交的程序,因而具有典型性。本书中代码的风格也很值得一提。许多程序设计教程,其编写者虽有丰富的教学经验,但却不一定具有实际的软件开发经历,因而书中的例子程序往往在变量命名、代码效率等程序设计风格方面不是很在意,只求正确即可,教学代码的痕迹明显。而本书的作者除了具有多年的教学经验以外,还从事过多年的软件开发。李文新教授是国内第一个自主研制的地理信息系统开发环境GeoUnion的主要设计者和核心代码编写者之一,曾经担任过图原空间信息技术有限公司和长天科技有限公司的总工程师。她目前是中国计算机学会信息学奥林匹克竞赛科学委员会的科学委员,是ACMICPC竞赛北京大学代表队的原任教练和现任领队。余华山副教授多年来一直从事支持高性能计算的程序开发与运行环境的研究工作,是集群并行程序开发与运行平台P_HPF系统的主要研制者之一,主持开发了计算网格协同平台 Harmonia系统。在中国教育科研网格China Grid公共软件支撑平台CGSP的研制过程中,他是总体设计的主要负责人之一,并负责CGSP信息服务系统的设计和实现。郭炜老师的专业研究方向是计算机辅助教学,他独立开发了《我爱背单词》等系列著名英语学习软件,同时还担任教练,和李文新教授一起率领北京大学ACMICPC国际大学生程序设计竞赛队在国际竞赛中取得了较好名次。本书中的例子程序的代码风格优美、注释完备、可读性强,以此作为范例,对培养良好的程序设计风格,日后在团队开发中赢得同事的信任和喜爱十分有益。在这个提倡创新的年代,本书是特别富有创意的,希望并相信读者能够喜欢。
2007年8月北京大学教授原教育部高等学校计算机科学与技术教学指导委员会副主任21世纪大学本科计算机专业系列教材编委会主任
前言FOREWORD计算机程序是通过在计算机内存中开辟一块存储空间,并用一个语句序列不断修改这块存储空间上的内容,最终得到问题的答案的方法来解决实际问题的。计算机程序一般需要用一种具体的程序设计语言表达出来。一种计算机语言通过定义变量的形式给出了申请内存的方式,并通过表达式和赋值语句给出了对内存中的数据进行运算和修改的方法,通过分支和循环语句提供了用不同方式安排语句序列的能力。大部分计算机语言还提供了基础函数库来完成一些常用的计算和数据处理的功能。使用计算机程序解决实际问题,首先要能够将一个具体问题抽象成一个可计算的问题,并找出可行的计算过程;其次是掌握一门程序设计语言,将设计的计算过程写成具体的代码在机器上运行。作者总结了多年计算机程序设计类课程的教学经验,认为在程序设计课程的教学中应该把握5个基本的教学环节: 第一,让学生充分理解计算机程序在内存中的运行原理和过程。在程序运行过程中任意时刻都清楚语句运行到了哪里,以及当前存储数据的内存区的内容是什么。只有清楚这些,才能在程序调试过程中及时地找到出错位置,并修改错误,最终让程序按照设计者的意图执行。第二,以一门高级程序设计语言为例,让学生了解该设计语言使用哪些语句定义变量,哪些语句修改变量,变量有哪些基本类型,每种类型的变量占多大的存储空间,不同类型的变量可以进行哪些运算,哪些语句用来控制语句序列的分支和循环,如何用简单变量组合出复杂变量(如数组或结构体),如何控制复杂的计算过程(如通过函数实现分而治之),有哪些库函数是可用的,等等。第三,讲授一些常用的、基本的计算过程,使得学生在解决复杂问题之前,手上有一些可用的基本方法。例如,如何通过分支和循环语句模拟一个手工计算的过程,进行不同数制转换时可以选定一个共同的基数进行转换,字符串处理的问题应该多使用库函数,处理日期问题时可以用一个数组来存储每个月的天数,这样可以很方便地处理不规则的数据,等等。第四,围绕一些具体的问题实例,让学生学会通过分析问题抽象出数学模型,从而设计出计算过程和中间数据的存储方式,最终实现代码并调试成功。学生只有通过这样一个完整的程序设计过程的训练,才能充分理解写程序是要干什么,并且学会判断什么样的问题适合用计算机来解决。第五,学生学习效果的检验方式直接决定了最终的教学效果。如果想让学生真正学会独立动手写出正确的程序,就必须采取上机考查的方式,要求学生针对实际问题写出最终可以正确运行并能解决问题的程序。本书的内容安排充分体现了上述的教学理念。为了方便理解例题中的代码,本书先用13的篇幅简明扼要地介绍CC语言的基本语法,包括变量的定义,变量的值的修改,基本的变量类型,用基本类型的变量构造数组、结构体等复杂的数据类型,定义表达式,控制语句序列,以及常用的C语言标准库函数。程序设计导引及在线实践第2版之后所有的内容都采用以问题为中心的讲述方式。首先用近13的篇幅讲述面对不同类型的常见问题,应该如何抽象计算过程,并将计算过程写成具体代码。这些问题包括简单计算问题、数制转换问题、字符串处理问题、日期和时间处理问题、计算过程模拟问题等。接着用近14的篇幅讲述了计算机程序设计中常用的但不同于数学计算方法的三种算法思想: 枚举、递归和动态规划。本书的最后两章讲述了如何用基本的数据类型构造一些稍微复杂的数据结构: 链表和二叉树,作为本书向数据结构递进的序曲。配合本书的教学,我们使用了北京大学在线评测系统,书中所有的例题和练习题都在该系统上,学生可以随时针对某一题目编写程序并提交给系统,几秒钟内就可以获得正确与否的回答。我们也利用该系统进行学生的期中、期末考试,学生必须现场在给定的时间内完成从问题分析到代码实现的全部过程才能通过考试。为了测试程序在不同数据输入下的正确性,该系统中的题目大部分采用输入多组测试数据的形式,所以在书中会看到每个程序都要读入多组数据进行处理。这些测试数据是彼此独立的,可以读入一组,处理一组并输出结果,然后再读入下一组。本书作者分工如下: 李文新编写第1章中的1.1、1.2、1.4、1.7、1.8、1.9节,第2章,第5章,第9章中的9.3、9.4、9.6、9.10节,以及附录A和附录B。郭炜编写第1章中的1.3、1.5、1.6、1.10~1.19节,第6章,第7章,第9章中的9.1、9.2、9.5、9.7、9.8和9.9节,以及第10章。余华山编写第3章、第4章、第8章、第11章和第12章。由于水平和精力所限,书中难免存在不当之处,恳请专家和读者批评指正。
作者2016年9月于燕园


第5章日期和时间处理在很多具体的程序设计中,经常会遇到与日期和时间处理相关的问题。基本思想: 这类问题一般会涉及不同日历表示法之间的相互转换。解决此类问题的基本思想是找到一种公共的基准,并通过该基准进行不同日历之间的转换。日期和时间处理问题一般不涉及很难的算法,但有时会有一些特殊情况需要处理,如果考虑不到就会出错。因此,需要有一些耐心处理细节问题,可以比较好地训练编程的严谨性。下面通过一些具体的实例,说明日期和时间处理上的常见问题及其解答。5.1例题: 判断闰年1. 问题描述判断某年是否是闰年。公历纪年法中,能被4整除的大多是闰年,但能被100整除而不能被400整除的年份不是闰年,如1900年是平年,2000年是闰年。2. 输入数据一行,仅含一个整数a02. void main3. {4. int a;记录待判定的年份5. scanf"%d", &a;6. ifa% 4!=0 7. printf"N\\n";8. else ifa% 100==0 && a% 400!=09. printf"N\\n";10.else11.printf"Y\\n";12.}8. 参考程序二1. #include2. void main{3. int a;4. scanf"%d", &a;5. ifa% 4==0 && a% 100!=0 || a% 400==06. printf"Y\\n";7. else8. printf"N\\n";9. }9. 实现中常见的问题问题一: 代码冗长,不必要的变量定义。例如:1. #include2. void main3. {4. int year, a, b, c;5. scanf"%d", &year;6. a=year% 4;7. b=year% 100;8. c=year% 400;9. ifa!=0{10.printf"N\\n";11.}12.ifa==0 && b!=0{13.printf"Y\\n";14.}15.ifb==0 && c!=0{16.printf"N\\n";17.}18.ifc==0{19.printf"Y\\n";20.}21.}分析:① 不必定义变量a、b、c,可以直接在判断语句里写表达式;② 可以用&&将输出Y和N的情况合并,使代码更简洁清晰。问题二: 逻辑错误。例如:1. #include2. void main3. {4. int n;5. scanf"%d", &n;6. ifn% 400==0printf"Y";7. else ifn% 4==0printf"Y";8. else printf"N";9. }分析:没有判断能被100整除但不能被400整除的情况。问题三: 用错运算符。例如:1. #include2. void main3. {4. int n;5. scanf"%d", &n;6. ifn4==0{7. ifn400==0 printf"Y\\n";8. else ifn100==0 printf"N\\n";9. else printf"Y\\n";10.}else printf"N\\n";11.12.}分析:判断一个数是否能被另一个数整除应该用整数取模运算,而不是用整数除法运算。问题四: C和C的输出混用,造成输出有误。例如:1. #include2. void main3. {4. int year;5. scanf"%d", &year;6. bool judge;7. judge=year% 4==0 && year% 100!=0 || year% 400==0;8. ifjudge printf"%c",''Y'';9. else printf"%c",''N'';10.printf"\\n";;11.}分析:① 在中定义的C的输入输出函数不能与中定义的C的输入输出函数混用,因为它们使用不同的缓冲区,在输出的时候有可能不按代码中出现的顺序输出。所以,在程序中不要同时使用C和C的输入输出语句。② 用prinf输出Y和N时,因为是常量不是变量,所以不必用%c而直接将Y和N写在双引号中,如前面给出的参考程序。问题五: 其他还有一些编译出错、提交时选错题目、选错编译语言等问题。5.2例题: 细菌繁殖1. 问题描述一种细菌的繁殖速度是每天成倍增长。例如,第一天有10个,第二天变成20个,第三天变成40个,第四天变成80个。现在给出第一天的日期和细菌数目,要你写程序求出到某一天的时候,细菌的数目。2. 输入数据第一行有一个整数n,表示测试数据的数目。其后n行的每行有5个整数,整数之间用一个空格隔开。第一个数表示第一天的月份,第二个数表示第一天的日期,第三个数表示第一天细菌的数目,第四个数表示要求的那一天的月份,第五个数表示要求的那一天的日期。已知第一天和要求的那一天在同一年并且该年不是闰年,要求的那一天一定在第一天之后。数据保证要求的那一天的细菌数目在整数范围内。3. 输出要求对于每一组测试数据,输出一行,该行包含一个整数,为要求的那一天的细菌数。4. 输入样例21 1 1 1 22 28 10 3 25. 输出样例2406. 解题思路此题实际上是求给定的两天之间间隔的天数n,第一天的细菌数乘以2的n次方就是题目的答案。每个月的天数因为不很规则,如果在程序中用规则描述会比较麻烦,所以可以使用一个数组将每个月的天数存起来。整个计算过程可以描述如下:1 读入测试样例数n;2 做n次:① 读入两个日期及第一天的细菌数;② 将两个日期转换为当年的第几天;③ 得到两个天数的差,即它们中间间隔的天数m;④ 用第一天的细菌数乘以2的m次方等到x;⑤ 输出x。7. 参考程序参考程序一: 作者c0610002080131. #include2. void main3. {4. int days\[12\]={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};5. int n;6. scanf"%d", &n;7. forint i=0; i 2. int month\[\]={0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};3. void main4. {5. int times;6. scanf"%d", ×7. int mon1, date1, mon2, date2, num1;8. whiletimes--{9. scanf"%d%d%d%d%d", &mon1, &date1, &num1, &mon2, &date2;10.int days=date2-date1;11.forint i=mon1; i2. #include3. int dayofmonth\[12\]={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};4.5. void main{6. int n;7. scanf"%d", &n;8. int a,b,num,c,d,i,k;9. fori=0; i2. void main3. {4. int n;5. scanf"%d", &n;6. int month\[13\]={0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};7. int month1, day1, month2, day2, days=0, num;8. forint i=0; i2. void main3. {4. int a\[12\]={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};5. int mo1, mo2, da1, da2, num, all, day1, day2, day, i, n;6. scanf"%d", &n;7. fori=0; i2. #include3. void main{4. int n, month1, day1, month2, day2;5. long num1, num2;6. int totalDays=0;7. int days\[13\]={0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};8. scanf"%d", &n;9. whilen--{10.scanf"%ld %ld %ld %ld %ld", &month1, &day1, &num1, &month2, &day2;11.ifmonth1==month212.totalDays=day2-day1;13.else{14.totalDays=day2days\[month1\]-day1;加了一次days\[month1\]15.forint i=month1; i2. int typeint;3. char week\[7\]\[10\]={"Saturday", "Sunday", "Monday", "Tuesday", "Wednesday","Thursday", "Friday"};4. int year\[2\]={365,366}; year\[0\]表示非闰年的天数,year\[1\]表示闰年的天数5. int month\[2\]\[12\]={31,28,31,30,31,30,31,31,30,31,30,31,31,29,31,30,31,30,31,31,30,31,30,31};6. month\[0\]表示非闰年里每个月的天数,month\[1\]表示闰年里每个月的天数7. void main8. { 9. int days, dayofweek; days 表示输入的天数,dayofweek表示星期几10.int i=0, j=0;11.while scanf"%d", &days && days!=-1 {12.dayofweek=days% 7;13.fori=2000; days=year\[typei\]; i14.days-=year\[typei\];15.forj=0; days=month\[typei\]\[j\]; j16.days-=month\[typei\]\[j\];17.printf"%d-%02d-%02d %s\\n", i, j1, days1, week\[dayofweek\];18.}19.}20.int typeint m{ 判断第m年是否是闰年,是则返回1,否则返回021.ifm% 4!=0 || m% 100==0 && m% 400!=0return 0; 不是闰年22.else return 1;是闰年23.}8. 实现中常见的问题问题一: 逻辑过于复杂,导致程序出错。问题二: 没有将判断闰年的代码抽象成函数,使得主程序代码不够清晰。问题三: 多数出错的地方在于算错从2000年到当前年经历了多少个闰年。很多同学都错在多算一个或者少算一个。另外,计算闰年不能用循环,否则会超时。5.4例题: 玛雅历1. 问题描述上周末,M.A教授对古老的玛雅研究有了一个重大发现。从一个古老的节绳(玛雅人用于记事的工具)中,教授发现玛雅人使用了一个一年有365天称为Haab的日历。这个Haab日历拥有19个月,在开始的18个月,一个月有20天,月份的名字分别是pop、no、zip、zotz、tzec、xul、yoxkin、mol、chen、yax、zac、ceh、mac、kankin、muan、pax、koyab和cumhu。这些月份中的日期用0~19表示。Haab历的最后一个月称为uayet,它只有5天,用0~4

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 台灣用户 | 香港/海外用户
megBook.com.tw
Copyright (C) 2013 - 2024 (香港)大書城有限公司 All Rights Reserved.