《问题求解与程序设计》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:鲍春波,林芳,谢丽聪编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2015
  • ISBN:9787302402657
  • 页数:409 页
图书介绍:本书包括5部分,第一部分包括教材的全部在线评测题目和概念填空题目的答案,第二部分是实验指导,包括命令行环境、集成环境介绍以及Vim编辑器/emacs编辑器的使用,特别介绍了如何用gcc编译器和grx图形库进行图形程序设计,第三、四部分是实验内容和实验的程序基础练习的答案、改错题目出现错误的原因分析,第五部分是课程设计的具体内容。

第1章 计算机与程序设计 1

1.1 什么是计算机 1

1.2 如何存储程序 4

1.2.1 存储单位 4

1.2.2 存储方式 4

1.2.3 存取操作 5

1.2.4 存储器分类 5

1.2.5 文件与目录 5

1.3 软件与程序设计 7

1.4 典型程序演示 9

1.5 程序设计方法 10

1.5.1 结构化方法 10

1.5.2 面向对象方法 11

1.6 程序设计语言 11

1.7 C/C++语言简介 14

1.8 C/C++结构化程序设计基本环境 16

小结 18

概念理解 18

基本功训练 19

第2章 数据类型与变量——程序设计入门 20

2.1 在屏幕上输出文字信息 20

2.1.1 C语言程序的基本框架 21

2.1.2 注释 22

2.1.3 预处理指令 22

2.1.4 主函数——应用程序的入口 23

2.1.5 转义序列 23

2.1.6 保留字与分隔符 24

2.1.7 标准输出函数 24

2.2 计算两个固定整数的和与积 25

2.2.1 输出列表和占位符 27

2.2.2 数据类型——整型 28

2.2.3 常量与变量 29

2.2.4 算术运算和算术表达式 31

2.2.5 赋值语句 31

2.2.6 程序设计的风格 32

2.3 计算任意两个整数的和与积 33

2.3.1 标准输入函数 34

2.3.2 测试用例 35

2.3.3 程序的顺序结构 36

2.4 温度转换 37

2.4.1 变量的初始化 39

2.4.2 运算的优先级和结合性 41

2.5 求两个整数的平均值 42

2.5.1 浮点型数据 44

2.5.2 浮点型数据的输入与输出 46

2.5.3 浮点型数据的舍入误差和溢出问题 48

2.5.4 不同类型之间的转换 50

2.6 计算圆的周长和面积 51

2.6.1 符号常量 52

2.6.2 带参数的宏 53

小结 54

概念理解 54

常见错误 55

在线评测 56

项目设计 58

第3章 判断与决策——选择程序设计 60

3.1 让成绩合格的学生通过 60

3.1.1 关系运算与逻辑判断 61

3.1.2 逻辑常量与逻辑变量 63

3.1.3 单分支选择结构 64

3.1.4 特殊形式的判断条件 66

3.1.5 比较两个实数的大小 67

3.1.6 复合语句 69

3.2 按成绩把学生分成两组 70

3.2.1 双分支选择结构 73

3.2.2 条件运算 74

3.3 按成绩把学生分成多组(百分制) 75

3.3.1 嵌套的if结构 81

3.3.2 嵌套的if-else结构 82

3.3.3 多分支选择结构 86

3.4 按成绩把学生分成多组(五级制) 87

3.4.1 字符常量和变量 90

3.4.2 字符型变量的输入与输出 91

3.5 判断闰年问题 93

3.5.1 逻辑运算 94

3.5.2 逻辑运算的优先级和短路性 95

小结 96

概念理解 97

常见错误 97

在线评测 98

项目设计 100

第4章 重复与迭代——循环程序设计 101

4.1 打印规则图形 101

4.1.1 计数控制的while循环 103

4.1.2 自增、自减运算 104

4.2 自然数求和 105

4.2.1 迭代与赋值 107

4.2.2 更多的赋值运算 109

4.2.3 for循环 109

4.3 简单的学生成绩统计 115

4.3.1 标记控制的while循环 117

4.3.2 程序的容错能力 118

4.3.3 程序调试与测试 119

4.3.4 输入输出重定向 119

4.3.5 do-while循环 121

4.4 计算2的算术平方根 123

4.4.1 误差精度控制的while循环 125

4.4.2 const常量 126

4.5 打印九九乘法表 127

4.5.1 多重循环嵌套 128

4.5.2 穷举法 131

4.6 判断一个数是否是素数 132

4.6.1 break/continue 135

4.6.2 goto语句 138

4.7 随机游戏模拟 140

4.7.1 随机数的生成 141

4.7.2 自顶向下、逐步求精 144

4.7.3 游戏程序的基本结构 145

4.8 结构化程序设计 145

小结 146

概念理解 147

常见错误 147

在线评测 148

项目设计 151

第5章 分而治之——模块化程序设计 152

5.1 再次讨论猜数游戏模拟问题 152

5.1.1 模块化思想 155

5.1.2 函数定义 156

5.1.3 函数调用 160

5.1.4 函数原型 165

5.1.5 函数测试 166

5.2 是非判断问题求解 166

5.2.1 判断函数 166

5.2.2 变量的存储类别与作用域 168

5.2.3 函数调用堆栈 175

5.3 递归问题求解 177

5.3.1 问题的递归描述 178

5.3.2 递归函数 178

5.4 用计算机绘图 182

5.4.1 接口设计 186

5.4.2 接口实现 188

5.4.3 全局变量 189

5.4.4 私有函数 191

5.4.5 建立自己的库 192

5.5 学生成绩管理——大规模问题求解 193

5.5.1 程序文件模块 196

5.5.2 构建多文件应用程序 196

小结 198

概念理解 198

常见错误 199

在线评测 199

项目设计 202

第6章 批量数据处理——数组程序设计 203

6.1 一组数据排序问题 203

6.1.1 什么是一维数组 205

6.1.2 一维数组的声明 206

6.1.3 一维数组的引用 207

6.1.4 一维数组初始化 209

6.1.5 让下标从1开始 209

6.1.6 交换排序 210

6.1.7 一维数组作为函数的参数 212

6.2 三门课程成绩按总分排序问题 215

6.2.1 二维数组 218

6.2.2 选择排序 220

6.2.3 二维数组作为函数的参数 221

6.3 在成绩单中查找某人的成绩 222

6.3.1 字符数组与字符串 226

6.3.2 字符串的输入与输出 227

6.3.3 字符串的基本操作 229

6.3.4 标准库中的字符及字符串函数 230

6.3.5 字符串数组 234

6.3.6 线性查找 235

6.3.7 折半查找 236

6.4 大整数加法 237

6.4.1 逻辑右对齐相加法 240

6.4.2 逆置左对齐相加法 241

小结 242

概念理解 243

常见错误 244

在线评测 244

项目设计 247

第7章 内存单元的地址——指针程序设计 250

7.1 用函数交换两个变量的值 251

7.1.1 指针变量的声明和初始化 254

7.1.2 指针变量的引用 255

7.1.3 指针作为函数的参数 256

7.2 再次讨论批量数据处理问题 259

7.2.1 指向一维数组的指针和指针运算 261

7.2.2 用指针访问一维数组的元素 263

7.2.3 用const修饰指针 267

7.3 二维批量数据处理问题的指针版 267

7.3.1 二维数组名与行列地址 270

7.3.2 用指针访问二维数组的元素 271

7.3.3 指针的指针 274

7.4 通用函数问题 275

7.4.1 指向函数的指针 277

7.4.2 指向函数的指针作为函数的参数 278

7.5 再次讨论字符串 279

7.5.1 字符指针与字符数组 282

7.5.2 字符型指针数组 284

7.5.3 用字符指针进行字符串排序 286

7.6 程序运行时提供必要的参数 286

7.6.1 命令行参数 288

7.6.2 集成环境下设置应用程序参数 289

7.7 数据规模未知的问题求解 289

7.7.1 void类型的指针 293

7.7.2 动态分配内存 294

7.7.3 动态申请字符串 295

7.7.4 动态申请一维数组 296

7.7.5 动态申请二维数组 296

7.7.6 让指针指向被调用函数中动态申请的内存 300

7.7.7 C++中的引用 303

小结 304

概念理解 305

常见错误 306

在线评测 307

项目设计 310

第8章 客观对象的描述——结构程序设计 312

8.1 基于对象数组的学生成绩管理问题 312

8.1.1 结构类型 316

8.1.2 结构变量的声明及使用 317

8.1.3 typedef 319

8.1.4 指向结构的指针 321

8.1.5 结构变量的内存映像 324

8.1.6 结构类型定义的嵌套 325

8.1.7 结构数组和指向结构数组的指针 325

8.1.8 结构作为函数的参数或返回值 327

8.1.9 抽象数据类型 328

8.2 基于对象链表的学生成绩管理系统 329

8.2.1 自引用结构与链表 334

8.2.2 静态链表和动态链表 336

8.2.3 返回链表的头指针 340

8.2.4 学生对象链表 341

8.3 志愿者管理问题 341

8.3.1 联合 343

8.3.2 志愿者信息存储 345

8.4 洗牌和发牌模拟问题 345

小结 351

概念理解 351

常见错误 352

在线评测 352

项目设计 356

第9章 数据的永久存储——文件程序设计 357

9.1 给一个源程序文件做备份 357

9.1.1 文件与目录 360

9.1.2 文件格式 361

9.1.3 文件操作的一般步骤 361

9.1.4 字符读写 363

9.1.5 字符串读写(无格式的行读写) 364

9.2 把数据保存到文件中 365

9.2.1 格式化读写 370

9.2.2 二进制块数据读写 372

小结 378

概念理解 378

常见错误 379

在线评测 379

项目设计 382

第10章 位运算——低级程序设计 383

10.1 网络IP地址的表示 383

10.1.1 按位左移或右移 385

10.1.2 按位取反 387

10.1.3 按位与 387

10.2 加密解密问题 389

10.2.1 按位或 390

10.2.2 按位异或 391

10.3 一个图形类型优化问题 391

小结 396

概念理解 396

常见错误 396

在线评测 397

项目设计 398

附录A C语言的关键字 401

附录B ASCII码 402

附录C C运算符的优先级与结合性 403

附录D C++版的HelloWorld! 405

D.1 C++的头文件 405

D.2 命名空间 406

D.3 C++的输入和输出 407

参考文献 409