《程序设计基础 从问题到程序》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:胡明,王红梅编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2011
  • ISBN:9787302239154
  • 页数:319 页
图书介绍:本书以C/C++程序设计语言为工具,以程序设计过程为主线,提高学生的程序设计能力和计算机思维能力。

第1章 绪论 1

1.1 问题求解与程序设计 1

1.1.1 程序、程序设计与程序设计语言 2

1.1.2 程序设计的一般过程 2

1.2 算法及其描述方法 4

1.2.1 算法及其特性 4

1.2.2 算法的描述方法 5

1.3 程序设计语言 7

1.3.1 程序设计语言的发展 7

1.3.2 程序设计语言的排名 10

1.4 程序的基本构成 11

1.4.1 基本字符集 12

1.4.2 词法单位 12

1.4.3 语法单位 13

1.4.4 程序 15

1.5 程序的上机过程 16

1.5.1 编程环境 17

1.5.2 程序编辑 18

1.5.3 程序编译 19

1.5.4 程序连接 21

1.5.5 运行调试 23

1.6 程序风格 24

1.6.1 标识符的命名规则 24

1.6.2 注释 24

1.6.3 缩进 25

1.6.4 行文格式 25

习题1 27

第2章 数据的存储和组织 29

2.1 数据的存储介质——存储器 29

2.1.1 二进制 29

2.1.2 存储器 31

2.2 数据的组织 32

2.3 基本数据类型 33

2.3.1 整型 34

2.3.2 实型 36

2.3.3 字符型 37

2.3.4 逻辑型 38

习题2 39

第3章 数据的基本表现形式 41

【任务3.1】计算圆的面积 41

3.1 常量 41

3.1.1 字面常量 42

3.1.2 符号常量 44

3.2 变量 45

3.2.1 变量的概念 46

3.2.2 变量的定义和初始化 46

3.2.3 变量的赋值 48

3.2.4 强制类型定义 50

3.3 解决任务3.1的程序 51

3.4 程序设计实例 52

3.4.1 实例1——华氏温度转换为摄氏温度 52

3.4.2 实例2——计算本息和 52

习题3 53

第4章 数据的基本处理 55

4.1 输入输出 55

【任务4.1】计算圆的面积(改进版) 55

4.1.1 输入输出的概念 55

4.1.2 格式化输入输出函数 56

4.1.3 解决任务4.1的程序 58

4.2 数据的基本运算 59

【任务4.2】疯狂赛车 59

4.2.1 算术运算 59

4.2.2 逻辑运算 61

4.2.3 运算符的优先级和结合性 63

4.2.4 运算对象的类型转换 64

4.2.5 解决任务4.2的程序 67

4.3 程序设计实例 67

4.3.1 实例1——华氏温度转换为摄氏温度(改进版) 67

4.3.2 实例2——通用产品代码UPC 68

习题4 69

第5章 程序的基本控制结构 71

5.1 顺序结构 71

【任务5.1】整数的逆值 71

5.1.1 复合语句实现顺序结构 72

5.1.2 解决任务5.1的程序 73

5.2 选择结构 73

【任务5.2】水仙花数 73

5.2.1 逻辑值控制的选择结构 74

5.2.2 算术值控制的选择结构 78

5.2.3 解决任务5.2的程序 80

5.3 循环结构 80

【任务5.3】鸡兔同笼问题 80

5.3.1 当型循环结构 81

5.3.2 直到型循环结构 83

5.3.3 计数型循环结构 85

5.3.4 循环结构的嵌套 87

5.3.5 解决任务5.3的程序 88

5.4 其他控制语句 88

【任务5.4】素数判定 88

5.4.1 break语句 89

5.4.2 continue语句 90

5.4.3 解决任务5.4的程序 91

5.5 程序设计实例 91

5.5.1 实例1——百元买百鸡问题 91

5.5.2 实例2——歌德巴赫猜想 93

习题5 94

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

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

【任务6.1】欧几里得算法(函数版) 97

6.1.1 函数定义 98

6.1.2 函数调用 100

6.1.3 函数声明 102

6.1.4 解决任务6.1的程序 103

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

【任务6.2】素数判定(函数版) 104

6.2.1 头文件与文件包含 104

6.2.2 标准输入输出函数 106

6.2.3 数学函数 110

6.2.4 随机函数 111

6.2.5 解决任务6.2的程序 112

6.3 变量的作用域 113

【任务6.3】鸡兔同笼问题(全局变量版) 113

6.3.1 局部变量 114

6.3.2 全局变量 116

6.3.3 解决任务6.3的程序 116

6.4 变量的生存期 117

【任务6.4】字数统计(静态变量版) 118

6.4.1 自动变量 118

6.4.2 静态变量 119

6.4.3 解决任务6.4的程序 120

6.5 程序设计实例 121

6.5.1 实例1——三角函数表 121

6.5.2 实例2——猜数游戏 122

习题6 124

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

7.1 指针 126

【任务7.1】获取密电码 126

7.1.1 指针的概念 127

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

7.1.3 指针变量的赋值 130

7.1.4 指针所指变量的间接访问 131

7.1.5 解决任务7.1的程序 132

7.2 指针作为函数的参数 132

【任务7.2】鸡兔同笼问题(函数版) 132

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

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

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

7.2.4 解决任务7.2的程序 138

7.3 程序设计实例 139

7.3.1 实例1——歌德巴赫猜想(函数版) 139

7.3.2 实例2——求一元二次方程的根 141

习题7 142

第8章 批量同类型数据的组织——数组 144

8.1 一维数组 144

【任务8.1】舞林大会 144

8.1.1 一维数组的定义和初始化 145

8.1.2 一维数组的操作 147

8.1.3 一维数组作为函数的参数 149

8.1.4 解决任务8.1的程序 152

8.2 二维数组 153

【任务8.2】幻方问题 153

8.2.1 二维数组的定义和初始化 154

8.2.2 二维数组的操作 156

8.2.3 二维数组作为函数的参数 158

8.2.4 解决任务8.2的程序 159

8.3 程序设计实例 160

8.3.1 实例1——对角线元素之和 160

8.3.2 实例2——哥尼斯堡七桥问题 162

习题8 163

第9章 字符数据的组织——字符串 165

【任务9.1】恺撒加密 165

9.1 字符串变量的定义和初始化 166

9.1.1 字符数组 166

9.1.2 字符串指针 167

9.2 字符串的操作 168

9.2.1 输入输出操作 168

9.2.2 赋值操作 172

9.2.3 字符串的比较 173

9.2.4 常用字符串库函数 174

9.3 解决任务9.1的程序 174

9.4 程序设计实例 175

9.4.1 实例1——字数统计 175

9.4.2 实例2——字符串匹配 177

习题9 178

第10章 自定义数据类型 181

10.1 可枚举数据的组织——枚举类型 181

【任务10.1】荷兰国旗问题 181

10.1.1 枚举类型的定义 182

10.1.2 枚举变量的定义与初始化 183

10.1.3 枚举变量的操作 184

10.1.4 解决任务10.1的程序 185

10.2 不同类型数据的组织——结构体类型 187

【任务10.2】统计入学成绩 187

10.2.1 结构体类型的定义 188

10.2.2 结构体变量的定义和初始化 189

10.2.3 结构体变量的操作 191

10.2.4 解决任务10.2的程序 193

10.3 批量不同类型数据的组织——结构体数组 194

【任务10.3】统计入学成绩(改进版) 194

10.3.1 结构体数组的定义和初始化 195

10.3.2 解决任务10.3的程序 197

10.4 为自定义数据类型定义别名 198

10.5 程序设计实例 200

10.5.1 实例1——最近对问题 200

10.5.2 实例2——手机电话簿 202

习题10 204

第11章 再谈函数 206

11.1 函数的嵌套调用 206

【任务11.1】字符串的循环左移 206

11.1.1 函数的嵌套调用 207

11.1.2 解决任务11.1的程序 211

11.2 函数的递归调用 212

【任务11.2】Fibonacci数列 212

11.2.1 函数的递归调用 212

11.2.2 解决任务11.2的程序 215

11.3 程序设计实例 216

11.3.1 实例1——弦截法求方程的根 216

11.3.2 实例2——汉诺塔问题 217

习题11 219

第12章 再谈指针 222

12.1 指针与数组 222

【任务12.1】判断回文 222

12.1.1 指向一维数组的指针 223

12.1.2 指向二维数组的指针 225

12.1.3 指针数组 227

12.1.4 解决任务12.1的程序 229

12.2 指针与结构体 229

【任务12.2】统计入学成绩(函数版) 229

12.2.1 指向结构体的指针 230

12.2.2 结构体指针作为函数参数 232

12.2.3 解决任务12.2的程序 233

12.3 动态存储分配 234

【任务12.3】进制转换 234

12.3.1 申请和释放存储空间 235

12.3.2 指针和链表 238

12.3.3 解决任务12.3的程序 240

12.4 程序设计实例 242

12.4.1 实例1——发纸牌 242

12.4.2 实例2——约瑟夫环问题 244

习题12 247

第13章 再谈输入输出——文件 249

【任务13.1】统计入学成绩(文件版) 249

13.1 概述 250

13.1.1 文件的概念 250

13.1.2 文本文件和二进制文件 250

13.1.3 文件缓冲区 252

13.1.4 文件指针 252

13.1.5 文件的位置指针 253

13.2 文件的打开与关闭 254

13.2.1 文件的打开 254

13.2.2 文件的关闭 256

13.3 文件的读写操作 256

13.3.1 字符方式文件读写 256

13.3.2 字符串方式文件读写 258

13.3.3 格式化方式文件读写 260

13.3.4 二进制方式文件读写 262

13.4 解决任务13.1的程序 264

13.5 程序设计实例 266

13.5.1 实例1——文件复制 266

13.5.2 实例2——注册与登录 268

习题13 270

第14章 再谈程序的基本结构 272

【任务14.1】石头、剪子、布游戏 272

14.1 多文件程序 273

14.1.1 将源程序文件分解为多个程序文件模块 273

14.1.2 构建多文件程序 274

14.2 外部变量和外部函数 276

14.2.1 外部变量 276

14.2.2 外部函数 278

14.3 嵌套包含 279

14.3.1 条件编译 279

14.3.2 保护头文件 281

14.4 解决任务14.1的程序 283

习题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

附录D 程序设计实例索引 317

参考文献 319