计算机算法基础(第2版)

计算机算法基础(第2版)"

作者:宋晏、杨国兴、朱红
ISBN:9787302409250
定价:¥34.50
字数:千字
页数:
出版时间:2015.09.01
开本:
版次:2-1
装帧:
出版社:清华大学出版社
简介

本书以算法设计为主、C语言为辅的方式编写,详细讲述顺序结构、分支结构、循环结构的算法设计方法、模块化的设计及实现方法,以及涉及数组、结构体等数据结构的算法设计方法。本书突出算法,弱化语法,强调规范,重视实践,培养编程能力;遵循易讲、易懂、易学的原则进行编写。教材配有大量算法设计的实例和实践题目。

本书适合作为高等院校计算机和非计算机专业的编程初学者的教材,也可作为编程爱好者的入门参考书。

前言

计算机系列教材

计算机算法基础(第2版)

宋晏主编

杨国兴朱红副主编 

清华大学出版社北京内 容 简 介本书以算法设计为主、C语言为辅的方式编写,详细讲述顺序结构、分支结构、循环结构的算法设计方法、模块化的设计及实现方法,以及涉及数组、结构体等数据结构的算法设计方法。本书突出算法,弱化语法,强调规范,重视实践,培养编程能力;遵循易讲、易懂、易学的原则进行编写。教材配有大量算法设计的实例和实践题目。

本书适合作为高等院校计算机和非计算机专业的编程初学者的教材,也可作为编程爱好者的入门参考书。本书封面贴有清华大学出版社防伪标签,无标签者不得销售。

版权所有,侵权必究。侵权举报电话: 0106278298913701121933图书在版编目(CIP)数据计算机算法基础/宋晏主编. —2版. —北京: 清华大学出版社, 2015

计算机系列教材

ISBN 9787302409250Ⅰ. ①计…Ⅱ. ①宋…Ⅲ. ①电子计算机-算法理论-高等学校-教材Ⅳ. ①TP301.6中国版本图书馆CIP数据核字(2015)第166133号责任编辑: 白立军

封面设计: 常雪影

责任校对: 白蕾

责任印制: 李红英

出版发行: 清华大学出版社

网址: http://www.tup.com.cn, http://www.wqbook.com  

地址: 北京清华大学学研大厦A座邮编: 100084

社总机: 01062770175邮购: 01062786544

投稿与读者服务: 01062776969, cservice@tup.tsinghua.edu.cn

质量反馈: 01062772015, zhiliang@tup.tsinghua.edu.cn

课件下载: http://www.tup.com.cn,01062795954

印刷者: 北京富博印刷有限公司

装订者: 北京市密云县京文制本装订厂

经销: 全国新华书店

开本: 185mm×260mm印张: 17.25插页: 字数: 402千字

附光盘1张

版次: 2008年9月第1版2015年9月第2版印次: 2015年9月第1次印刷

印数: 1~2000

定价: 34.50元

产品编号: 06529001

主任: 周立柱

副主任: 王志英李晓明

编委委员: (按姓氏笔画为序)

汤志忠孙吉贵杨波

岳丽华钱德沛谢长生

蒋宗礼廖明宏樊晓桠

责任编辑: 马瑛珺

责任编委: 王志英

关于程序,著名计算机科学家沃思(N.Wirth)提出了一个经典公式: 程序=数据结构+算法。算法设计是程序设计的核心,也是程序设计的难点。

目前,算法设计的教学模式主要有两种。

(1) 将算法设计融入到程序设计语言课程中介绍,算法设计只是作为程序设计的一项阶段性工作。

(2) 将编程语言融入到算法设计中,突出算法设计教学的主体地位,将程序设计语言作为实现算法的工具。

多年的教学实践证明,第二种模式能更好地突出算法设计教学的主体地位,使学生真正掌握算法设计的基本方法,并做到触类旁通、一通百通。

本教材采用算法设计为主、C程序设计语言为辅的方式编写,主要特色如下。

1. 突出算法,弱化语法,强调规范

本书各章均以算法设计主线展开,强调解决问题的方法、规律;重点讲解C语言中重要的一般性的语法知识,回避C语言中过于技巧性、易混淆的、不符合规范的表达方式。

在算法设计和书写程序上,强调规范化,每章都增加了“C编程规范”这部分内容,教材中所有程序的书写也都遵照规范,从始至终强化规范化的处理方式,为编程学习者奠定良好的基础。

2. 先易后难,将字符型数据的使用整合至第8章

由于人们从小就开始接触数学,学习数学,所以对数值型数据的处理比较容易接受,相对来讲,字符型数据学习起来难度较大。本书采取先易后难的原则,在第2~7章全部以数值型数据为例讲解算法的设计和C语言的语法。在前面各章打下良好的基础后,再集中学习字符型数据的处理方法,同时完整地建立字符型数据处理的知识体系。

3. 学为所用,将难度大的语法知识化整为零,利用索引表为读者规整知识线索

本书各章的C语言语法知识,采取学为所用的原则,通过实例引入,摒弃了将语法知识一股脑、无理由地灌输的方式,将其化整为零。例如,将C语言中指针的使用分散至各章: 在第6章函数部分引入指针的概念,介绍函数设计中参数的地址传递方式;在第7章数组部分引入数组的指针;在第8章字符和字符串部分引入字符串的指针和指针数组;在第9章结构体中引入结构体的指针。用这样的方式循序渐进,将学习指针的难度分散,并且逐步强化。

为使读者把分散在各章的知识串联起来,教材提供了相关索引。

4. 学以致用,重视实践,培养能力

学习程序设计语言,必须要有很强的上机编写程序、调试程序的能力。本书在各章设计了与教学内容配套的、有针对性的实验题目,并提供了详尽的实践指导。实验中特别强调良好的输入输出设计和调试程序能力的培养。

本书适合于各高等院校计算机和非计算机专业的编程初学者使用。为了方便读者的学习,本书配有所有例题、习题和实验题的源程序。

本书由宋晏任主编并编写了第5~7章及各章实验;杨国兴、朱红任副主编,并一同编写了第1~4章、第8章和第9章及附录部分;参加本书大纲讨论和部分编写工作的还有严婷、邹广慧、吕东艳、王京京等。

由于编者的水平有限,书中难免有不当之处,热切期望得到同行、专家和读者的批评指正。

  编者

2015年6月于北京

目录

第1章计算机基础知识/1

1.1认识计算机/1

1.1.1计算机硬件系统/1

1.1.2计算机软件系统/2

1.1.3计算机工作过程/3

1.1.4计算机工作的特点/4

1.2计算机语言/5

1.3计算机程序/7

1.4课外阅读/8第2章算法与C程序设计初步/10

2.1算法的含义/10

2.2算法的特性/13

2.3C语言编程要点/14

2.3.1C语言的特点/14

2.3.2C程序的组成/15

2.3.3变量/17

2.3.4赋值语句/21

2.3.5基本输入输出函数/21

2.4C程序示例/27

2.5扩展知识/28

2.5.1数据类型/28

2.5.2变量的初始化/30

2.5.3不同数据类型间的运算/30

2.5.4自增和自减运算符 /32

2.6C编程规范/33

2.6.1排版/33

2.6.2注释/33

2.6.3标识符命名/34

2.6.4变量/34

2.7动态调试程序的方法/34

2.7.1设置断点/35

2.7.2单步运行和观测窗口/36

2.8课后练习/38

2.9实验题目/38

2.9.1认识C程序/38

2.9.2比较两个交换变量取值的算法/40

2.10课外学习/41第3章初步认识结构化算法/42

3.1结构化算法的原则和特点/42

3.1.1结构化算法的主要原则/42

3.1.2结构化算法的主要特点/43

3.23种基本控制结构与流程图/43

3.2.1传统流程图与3种控制结构/43

3.2.2NS图与3种基本控制结构/44

3.3NS图描述算法/46

3.4顺序结构算法举例/47

3.5扩展知识/49

3.5.1认识编译预处理命令include

和define/49

3.5.2编译预处理命令的使用/51

3.6C编程规范/52

3.7课后练习/52

3.8顺序结构算法实验/52

3.9课外阅读/53第4章分支结构算法及其实现/54

4.1关系表达式和逻辑表达式/54

4.1.1关系运算和关系表达式/54

4.1.2逻辑运算和逻辑表达式/55

4.2二选一分支结构/58

4.3算法走读/61

4.3.1对算法的NS图进行编号/61

4.3.2用测试数据检验算法/62

4.4实现二选一结构的ifelse 语句/64

4.4.1ifelse语句的基本形式/64

4.4.2ifelse语句的缩进、对齐/64

4.4.3复合语句/65

4.5含二选一分支结构的算法举例/67

4.6多分支结构及算法举例/70

4.6.1多分支选择结构/70

4.6.2实现多分支结构的C语句/73

4.7扩展知识/74

4.7.1C数据与逻辑“真”与“假”/74

4.7.2条件运算符/74

4.8C编程规范/75

4.8.1排版/75

4.8.2可读性/75

4.8.3质量保证/76

4.9课后练习/76

4.10实验题目/77

4.10.1二选一分支结构算法设计/77

4.10.2修改分支结构的C程序/78

4.10.3多分支结构算法设计/79

4.11课外阅读/80第5章循环结构算法及其实现/81

5.1先判断型循环结构/81

5.1.1定数循环/81

5.1.2C语言中的while语句/83

5.1.3for 循环结构/85

5.1.4不定数循环/86

5.1.5先判断型循环结构的算法举例/89

5.2循环结构算法走读/94

5.2.1算法走读/94

5.2.2算法的健壮性/97

5.3后判断型循环结构/99

5.4 循环的嵌套/102

5.4.1自顶向下、逐步求精的设计方法/102

5.4.2循环的嵌套/104

5.4.3for循环结构与穷举法/105

5.5扩展知识/109

5.5.1复合赋值运算符/109

5.5.2for循环的灵活使用/109

5.5.3break语句/110

5.5.4枚举类型/112

5.6C编程规范/115

5.6.1排版/115

5.6.2可读性/115

5.6.3提高效率/115

5.7课后练习/115

5.8实验题目/117

5.8.1先判断型循环结构算法设计(一)/117

5.8.2先判断型循环结构算法设计(二)/118

5.8.3后判断型循环结构算法设计/119

5.8.4循环嵌套算法的设计/120

5.8.5利用for循环穷举法解题/122

5.9课外实践/123第6章模块化和C语言的函数/124

6.1“模块化”程序设计思想/124

6.2函数/126

6.2.1标准函数/126

6.2.2自定义函数/127

6.3参数/130

6.3.1形参和实参/130

6.3.2参数的值传递和地址传递/130

6.3.3如何设计函数中的参数/132

6.4返回值/137

6.5函数举例/138

6.6调用过程分析/143

6.6.1函数调用的一般形式/143

6.6.2函数调用的方式/143

6.6.3函数调用的过程/144

6.7扩展知识/146

6.7.1全局变量和局部变量/146

6.7.2函数的递归调用/149

6.7.3带参数的宏定义/151

6.7.4利用#include 实现代码的重用/153

6.8C编程规范/154

6.8.1函数设计/154

6.8.2全局变量/155

6.8.3指针/155

6.9课后练习/155

6.10实验题目/157

6.10.1打印月历/157

6.10.2函数的嵌套调用/157

6.10.3掷骰子游戏/158

6.10.4函数的递归/160

6.11课外实践/161第7章数组/162

7.1一维数组及其使用/162

7.1.1数组的引出/162

7.1.2一维数组的定义和引用/163

7.1.3一维数组使用举例/165

7.1.4数组名做函数的参数/172

7.1.5排序和查找算法/178

7.2二维数组及其使用/187

7.2.1二维数组的定义和引用/187

7.2.2二维数组使用的一般形式/188

7.2.3二维数组使用举例/189

7.2.4二维数组名做函数的参数/191

7.3扩展知识/195

7.3.1数组的初始化/195

7.3.2一维数组的指针变量/196

7.3.3一维数组指针做函数的参数/198

7.4C编程规范/199

7.4.1数组定义规范/199

7.4.2数组使用规范/200

7.5课后练习/200

7.6实验题目/201

7.6.1数组元素计数器和做标记/201

7.6.2数组名作为函数参数/202

7.6.3改进冒泡法排序算法/203

7.6.4二维数组的使用/205

7.7课外实践/206第8章字符和字符串处理的算法/208

8.1字符类型数据处理的算法/208

8.1.1字符常量与字符变量/208

8.1.2字符数据在内存中的存储/209

8.1.3字符类型数据处理算法举例/210

8.2一个字符串的存储和处理/214

8.2.1一维字符数组与字符串/214

8.2.2C语言中字符串的输入输出/215

8.2.3字符串处理函数/217

8.2.4字符串处理算法举例/219

8.3多个字符串的存储和处理/225

8.3.1二维字符数组/225

8.3.2多个字符串处理算法举例/226

8.4扩展知识/229

8.4.1字符串的指针变量/229

8.4.2指针数组/231

8.5课后练习/233

8.6实验目的/233

8.6.1字符及字符串处理/233

8.6.2字符串处理/234

8.6.3综合练习多个字符串的

存储和处理/235第9章结构体/237

9.1结构体的引出/237

9.2结构体类型和结构体变量/238

9.2.1结构体类型/238

9.2.2结构体变量/239

9.2.3结构体变量的引用/241

9.3结构体数组/243

9.3.1结构体数组/243

9.3.2结构体数组的引用/244

9.4指向结构体的指针变量/246

9.4.1结构体变量的指针变量/246

9.4.2结构体和结构体指针做参数/246

9.5扩展知识/248

9.6C编程规范/249

9.6.1结构体设计/249

9.6.2可读性/250

9.7课后练习/250

9.8实验题目/251

9.8.1结构体变量的定义和使用/251

9.8.2结构体数组的使用/252

9.8.3结构体做函数的参数——结构体

指针的使用/253

9.9课外实践/254附录AC语言常用格式说明符/256附录B本书各章C语言运算符的优先级和结合性/258附录C常用字符ASCII码表/260C语言语法索引/261算法索引/263

参考文献/264

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个