《程序设计方法及在线实践指导》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:王衍,王桂平,冯睿等编著
  • 出 版 社:杭州:浙江大学出版社
  • 出版年份:2010
  • ISBN:9787308073035
  • 页数:429 页
图书介绍:本教材是我校程序设计教学改革的成果。以培养学生程序设计能力为目标,以程序设计基本思想和常用方法为主线,通过ACM/ICPC竞赛经典题目为例进行阐述,以在线竞赛平台为实验教学环境。教学课时安排为90~120。本教材的内容分为三部分:第一部分介绍C/C++语言基础知识。这一章所讲授的语言知识只是用来编写一个C/C++程序所需的最小语法知识集。第二部分是本教材的重点,介绍程序设计的基本思想和方法。从最简单的例子引入算法思想,然后通过一些经典的ACM/ICPC竞赛题目进行分析与设计。包括枚举、模拟、字符串处理、高精度运算、递归与搜索、排序与检索等。第三部分是课程设计。本教材适用于大一、二学生的《程序设计基础》、《C语言程序设计》等课程的教材。

第一篇 基础知识 3

第1章C/C++语言基础 3

1.1 C/C++程序的基本框架 3

1.2程序中的数据 6

1.2.1变量 6

1.2.2常量 9

1.3运算符和表达式 10

1.3.1运算符的优先级和结合性 10

1.3.2算术运算符及算术表达式 11

1.3.3赋值运算符及赋值表达式 14

1.3.4关系运算符及关系表达式 15

1.3.5逻辑运算符及逻辑表达式 16

1.3.6类型转换 18

1.4 C/C++的语句 21

1.5数学函数的使用 22

1.5.1常用的数学函数 22

1.5.2数学函数的使用 23

1.6算法及程序控制结构 26

1.6.1算法及控制结构 26

1.6.2顺序结构 26

1.7选择结构 28

1.7.1if语句 28

1.7.2条件运算符与条件表达式 33

1.7.3 switch语句 34

1.8循环结构 39

1.8.1 3种循环语句 39

1.8.2 break语句和continue语句 45

1.8.3循环的嵌套 49

1.8.4循环结构例子 51

1.9函数设计 57

1.9.1函数概述 57

1.9.2函数的定义 58

1.9.3函数参数 60

1.9.4函数的返回值 62

1.9.5函数的调用 64

1.9.6函数的嵌套调用 65

1.9.7函数的设计 66

1.10数组 72

1.10.1一维数组的定义与引用 72

1.10.2二维数组的定义和引用 76

1.10.3数组名作函数参数 79

1.10.4编写数组应用的综合程序 81

1.11指针与指针变量 85

1.11.1指针概述 85

1.11.2指针与指针变量 87

1.11.3指针变量作函数参数 90

1.11.4数组与指针变量 94

1.11.5编写指针应用的综合程序 98

第2章 字符及字符串基础知识 103

2.1字符型数据 103

2.1.1字符型变量 103

2.1.2字符型常量 104

2.1.3字符型数据的输入/输出 106

2.2字符串常量 108

2.3字符数组 110

2.3.1字符数组的定义与初始化 110

2.3.2字符数组元素的引用 111

2.3.3字符数组的输入/输出 112

2.3.4字符数组与字符串常量的区别与联系 114

2.4字符指针变量 115

2.4.1字符指针变量的定义与引用 116

2.4.2字符指针变量、字符数组与字符串常量 116

2.5字符串处理函数 119

2.6编写处理字符型数据的程序 125

第二篇 程序设计方法及在线实践(基础篇) 131

第3章ACM/ICPC程序设计竞赛与在线实践 131

3.1程序设计竞赛与在线程序实践 131

3.2 ACM/ICPC程序设计竞赛简介 132

3.3 ACM/ICPC竞赛题目特点 132

3.3.1 ACM/ICPC题目组成及特点 132

3.3.2 ACM/ICPC题目的输入/输出 133

3.3.3 ACM/ICPC题目类型 134

3.4 ACM/ICPC竞赛题目解析 135

第4章 枚举 145

4.1枚举的基本思路 145

4.2歌德巴赫猜想 149

4.3其他竞赛题目解析 154

第5章 模拟 169

5.1模拟的基本思路 169

5.2模拟约瑟夫环 171

5.3游戏的模拟 177

5.4其他模拟题目解析 191

第6章 字符及字符串处理 199

6.1字符转换与编码问题 199

6.1.1字符转换 199

6.1.2字符编码 202

6.2回文的判断与处理 211

6.3子串处理 216

6.4其他竞赛题目解析 222

第三篇 程序设计方法及在线实践(提高篇) 233

第7章 高精度计算 233

7.1基础知识 233

7.1.1进制转换 233

7.1.2用字符型数组或整型数组实现算术运算 236

7.1.3高精度计算的基本思路 239

7.2高精度数的基本运算 243

7.2.1高精度数的加法 243

7.2.2高精度数的乘法 246

7.2.3高精度数的除法 249

7.3其他高精度题目解析 254

7.3.1数列问题 254

7.3.2其他题目 257

第8章 递归与搜索 261

8.1递归的基本思想 261

8.1.1什么是递归 261

8.1.2例题解析及递归函数设计 263

8.1.3递归存在的问题 271

8.2递归思想在竞赛题目中的应用 272

8.3递归与搜索 278

8.3.1搜索算法思想 278

8.3.2递归函数的设计 279

8.3.3例题解析 279

8.4递归方法求解排列组合问题 292

8.4.1排列问题 292

8.4.2组合问题 299

第9章 排序及检索 311

9.1排序算法 311

9.1.1插入排序法 311

9.1.2冒泡法排序 314

9.1.3简单选择法排序 318

9.2 qsort函数及其使用 322

9.2.1 qsort函数的用法 322

9.2.2 qsort函数应用例子 325

9.3竞赛题目解析 330

9.3.1数值型数据的排序 330

9.3.2字符型数据的排序 334

9.3.3 混合数据的排序 337

9.4二分法思想及二分检索 343

9.4.1二分法的思想 343

9.4.2二分法检索 343

9.4.3竞赛题目分析 346

第四篇 课程设计 353

第10章 课程设计:字符界面扫雷游戏的开发 353

10.1软件需求说明 353

10.2地图的表示与输出 355

10.2.1 Windows操作系统扫雷游戏简介 355

10.2.2如何表示地图 356

10.2.3如何表示一个位置的8个相邻位置 357

10.2.4如何输出地图 358

10.2.5测试程序 359

10.3随机生成地图 361

10.3.1随机函数rand() 361

10.3.2随机生成地图 362

10.3.3测试程序 363

10.4如何实现玩游戏 366

10.4.1显示给用户看的地图 366

10.4.2输出用户地图 367

10.4.3点开一片连续的没有地雷的区域 368

10.4.4游戏的玩法 368

10.4.5测试程序 369

10.4.6完善程序 374

第五篇 附录 379

附录A C/C++程序的编写与运行 379

附录B程序测试与调试 385

附录C ACM/ICPC入门指导 399

附录D C/C++的输入/输出 406

附录E ASCII编码表 420

附录F C/C++关键字 421

附录G运算符及其优先级与结合性 422

附录H本教材例题和练习题在ZOJ、POJ及UVA上的题号 423

参考文献 429