当前位置:首页 > 工业技术
程序设计基础  从问题到程序  第2版
程序设计基础  从问题到程序  第2版

程序设计基础 从问题到程序 第2版PDF电子书下载

工业技术

  • 电子书积分:12 积分如何计算积分?
  • 作 者:胡明,王红梅著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2016
  • ISBN:7302411808
  • 页数:317 页
图书介绍:本书以C程序设计语言为工具,以程序设计过程为主线,通过“问题→想法→算法→程序”的问题求解过程,提高学生的程序设计能力和计算机思维能力。本书不是单纯地解释语言概念,而是以任务驱动的方式,带领学生分析问题、构造算法、应用程序设计语言解决实际问题,使学生在潜移默化中学会程序设计。本书遵循初学者的认知规律,科学安排知识单元之间的拓扑关系,概念清晰,实例丰富,深入浅出,是程序设计初学者的理想教材。
《程序设计基础 从问题到程序 第2版》目录

第1章 绪论 1

1.1 程序、程序设计与程序设计语言 1

1.1.1 程序与程序设计 1

1.1.2 程序设计语言 2

1.2 程序的基本构成 4

1.2.1 程序示例 5

1.2.2 基本字符集 6

1.2.3 词法单位 6

1.2.4 语法单位 8

1.2.5 程序 8

1.3 程序的上机过程 12

1.3.1 编程环境 12

1.3.2 程序编辑 12

1.3.3 程序编译 13

1.3.4 程序连接 13

1.3.5 运行调试 13

1.4 程序风格 14

1.4.1 标识符的命名规则 14

1.4.2 注释 15

1.4.3 缩进 15

1.4.4 行文格式 16

1.5 问题求解与程序设计 17

1.5.1 程序设计的一般过程 17

1.5.2 程序设计的核心——算法 18

1.5.3 程序设计实例——鸡兔同笼问题 21

习题1 22

第2章 数据的存储表示 25

引例2.1 计算圆的面积 25

2.1 数据的存储 26

2.1.1 二进制 26

2.1.2 内存 27

2.2 基本数据类型 28

2.2.1 整型 29

2.2.2 实型 31

2.2.3 字符型 32

2.2.4 逻辑型 33

2.3 常量 34

2.3.1 字面常量 34

2.3.2 符号常量 36

2.4 变量 38

2.4.1 变量的概念 38

2.4.2 变量的定义和初始化 39

2.4.3 变量的赋值 40

2.5 程序设计实例 43

2.5.1 实例1——温度转换 43

2.5.2 实例2——计算本息和 43

习题2 44

第3章 数据的运算处理 47

3.1 算术运算 47

引例3.1 求平均值 47

3.1.1 算术运算 48

3.1.2 运算符的优先级和结合性 49

3.2 逻辑运算 50

引例3.2 判断闰年 50

3.2.1 关系运算 51

3.2.2 逻辑运算 51

3.3 赋值运算 52

3.3.1 赋值运算 52

3.3.2 自增/自减运算 53

3.4 其他运算 54

3.4.1 逗号运算 54

3.4.2 取长度运算 54

3.4.3 条件运算 55

3.5 运算对象的类型转换 55

3.5.1 自动转换 56

3.5.2 强制转换 57

3.6 程序设计实例 58

3.6.1 实例1——通用产品代码UPC 58

3.6.2 实例2——疯狂赛车 59

习题3 60

第4章 程序的基本控制结构 63

4.1 顺序结构 63

引例4.1 整数的逆值 63

4.1.1 简单的顺序结构 64

4.1.2 复合语句 65

4.2 选择结构 65

引例4.2 水仙花数 66

4.2.1 逻辑值控制的选择结构 67

4.2.2 算术值控制的选择结构 69

4.3 循环结构 71

引例4.3 欧几里得算法 71

4.3.1 当型循环 72

4.3.2 直到型循环 72

4.3.3 计数型循环 73

4.3.4 循环结构的比较 74

4.3.5 循环结构的嵌套 77

4.4 其他控制语句 78

引例4.4 素数判定 78

4.4.1 break语句 79

4.4.2 continue语句 80

4.5 程序设计实例 81

4.5.1 实例1——将三个整数由小到大输出 81

4.5.2 实例2——今年已经过去多久了 81

4.5.3 实例3——百元买百鸡问题 83

4.5.4 实例4——哥德巴赫猜想 84

习题4 85

第5章 批量同类型数据的组织——数组 88

5.1 一维数组 88

引例5.1 舞林大会 88

5.1.1 一维数组的定义和初始化 89

5.1.2 一维数组的操作 92

5.2 二维数组 94

引例5.2 哥尼斯堡七桥问题 94

5.2.1 二维数组的定义和初始化 95

5.2.2 二维数组的操作 97

5.3 程序设计实例 99

5.3.1 实例1——折半查找 99

5.3.2 实例2——合并有序数组 100

5.3.3 实例3——对角线元素之和 101

5.3.4 实例4——幻方问题 103

习题5 104

第6章 程序的组装单元——函数 107

6.1 用户定义的函数——自定义函数 107

引例6.1 欧几里得算法 107

6.1.1 函数定义 108

6.1.2 函数调用 110

6.1.3 函数声明 112

6.2 系统定义的函数——库函数 113

引例6.2 素数判定 114

6.2.1 头文件与文件包含 115

6.2.2 标准输入输出函数 116

6.2.3 随机函数 119

6.2.4 其他常用库函数 120

6.3 变量的作用域 121

引例6.3 鸡兔同笼问题 121

6.3.1 局部变量 122

6.3.2 全局变量 124

6.4 变量的生存期 125

引例6.4 字数统计 125

6.4.1 自动变量 126

6.4.2 静态变量 127

6.5 程序设计实例 128

6.5.1 实例1——三角形的面积 128

6.5.2 实例2——猜数游戏 129

习题6 131

第7章 变量的间接访问——指针 134

7.1 指针 134

引例7.1 答疑教室 134

7.1.1 指针的概念 135

7.1.2 指针变量的定义和初始化 137

7.1.3 指针变量的操作 139

7.1.4 指针所指变量的操作 141

7.2 指针作为函数的参数 141

引例7.2 鸡兔同笼问题 141

7.2.1 值传递方式——函数的输入 143

7.2.2 指针传递方式——函数的输出 144

7.2.3 指针传递方式——函数的输入输出 145

7.3 数组作为函数的参数 146

引例7.3 顺序查找 146

7.3.1 一维数组作为函数的参数 147

7.3.2 二维数组作为函数的参数 149

7.4 程序设计实例 150

7.4.1 实例1——三个整数由小到大输出 150

7.4.2 实例2——哥德巴赫猜想 151

7.4.3 实例3——求一元二次方程的根 152

7.4.4 实例4——简单选择排序 154

习题7 155

第8章 字符数据的组织——字符串 158

引例8.1 恺撒加密 158

8.1 字符串变量的定义和初始化 159

8.1.1 字符数组 160

8.1.2 字符串指针 162

8.2 字符串的操作 162

8.2.1 输入输出操作 162

8.2.2 赋值操作 166

8.2.3 字符串的比较 167

8.2.4 常用字符串库函数 168

8.3 程序设计实例 168

8.3.1 实例1——字数统计 168

8.3.2 实例2——字符串匹配 169

习题8 171

第9章 自定义数据类型 174

9.1 可枚举数据的组织——枚举类型 174

引例9.1 行走机器人 174

9.1.1 枚举类型的定义 176

9.1.2 枚举变量的定义与初始化 176

9.1.3 枚举变量的操作 178

9.2 不同类型数据的组织——结构体类型 179

引例9.2 统计入学成绩 179

9.2.1 结构体类型的定义 180

9.2.2 结构体变量的定义和初始化 181

9.2.3 结构体变量的操作 183

9.3 批量不同类型数据的组织——结构体数组 185

引例9.3 统计入学成绩 186

9.3.1 结构体数组的定义和初始化 187

9.3.2 结构体数组的操作 189

9.4 为自定义数据类型定义别名 190

9.5 程序设计实例 191

9.5.1 实例1——荷兰国旗问题 191

9.5.2 实例2——最近对问题 193

习题9 195

第10章 再谈函数 198

10.1 函数的嵌套调用 198

引例10.1 字符串的循环左移 198

10.1.1 函数——封装的小程序 200

10.1.2 函数的嵌套调用 201

10.2 函数的递归调用 202

引例10.2 求n! 202

10.2.1 递归的定义 203

10.2.2 函数的递归调用 204

10.3 程序设计实例 206

10.3.1 实例1——公共子序列 206

10.3.2 实例2——弦截法求方程的根 208

10.3.3 实例3——汉诺塔问题 210

10.3.4 实例4——折半查找 211

习题10 213

第11章 再谈指针 216

11.1 指针与数组 216

引例11.1 判断回文串 216

11.1.1 用指针访问一维数组 217

11.1.2 用指针访问二维数组 219

11.1.3 指针数组 221

11.2 指针与结构体 222

引例11.2 统计入学成绩 222

11.2.1 指向结构体的指针 223

11.2.2 结构体指针作为函数参数 224

11.3 动态存储分配 225

引例11.3 发纸牌 226

11.3.1 申请和释放存储空间 227

11.3.2 动态数组 230

11.3.3 链表 232

11.4 程序设计实例 236

11.4.1 实例1——求最大字符串 236

11.4.2 实例2——进制转换 237

习题11 239

第12章 再谈输入输出 241

引例12.1 统计入学成绩 241

12.1 文件与文件指针 244

12.1.1 文本文件和二进制文件 244

12.1.2 文件缓冲区 245

12.1.3 文件指针 246

12.2 文件的当前位置指针 246

12.2.1 什么是文件的当前位置指针 246

12.2.2 跟踪文件的当前位置指针 247

12.2.3 定位文件的当前位置指针 248

12.3 文件的打开与关闭 249

12.3.1 文件的打开 249

12.3.2 文件的关闭 251

12.4 文件的读写操作 251

12.4.1 字符方式文件读写 251

12.4.2 字符串方式文件读写 252

12.4.3 格式化方式文件读写 254

12.4.4 二进制方式文件读写 255

12.5 程序设计实例 256

12.5.1 实例1——文件复制 256

12.5.2 实例2——注册与登录 258

习题12 260

第13章 再谈程序的基本结构 262

13.1 多文件程序 262

13.1.1 多文件程序的构成 262

13.1.2 将源程序文件分解为多个程序文件模块 263

13.2 外部变量和外部函数 264

13.2.1 外部变量 264

13.2.2 外部函数 265

13.3 嵌套包含 267

13.3.1 条件编译 267

13.3.2 保护头文件 270

13.4 程序设计实例——石头、剪子、布游戏 271

习题13 276

第14章 低级程序设计 277

引例14.1 XOR加密 277

14.1 数据表示 278

14.1.1 二进制数与八进制数和十六进制数之间的转换 278

14.1.2 位域 279

14.2 位运算 280

14.2.1 位逻辑运算 281

14.2.2 移位运算 282

14.2.3 补位原则 283

14.2.4 位运算的应用 283

14.3 程序设计实例 284

14.3.1 实例1——快速欧几里得算法 284

14.3.2 实例2——过滤特殊字符 285

习题14 287

第15章 基本的算法设计技术 288

15.1 蛮力法 288

15.1.1 设计思想 288

15.1.2 程序设计实例——起泡排序 289

15.2 穷举法 291

15.2.1 设计思想 291

15.2.2 程序设计实例——假币问题 292

15.3 递推法 295

15.3.1 设计思想 295

15.3.2 程序设计实例——捕鱼知多少 296

15.4 分治法 297

15.4.1 设计思想 297

15.4.2 程序设计实例——数字旋转方阵 299

15.5 动态规划法 302

15.5.1 设计思想 302

15.5.2 程序设计实例——0/1背包问题 303

15.6 贪心法 305

15.6.1 设计思想 305

15.6.2 程序设计实例——埃及分数 306

习题15 308

附录A 标准ASCII码 310

附录B 运算符的优先级和结合性 311

附录C 常用库函数 312

参考文献 317

返回顶部