《新概念C程序设计大学教程 C99版》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:张基温编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2015
  • ISBN:9787302394433
  • 页数:333 页
图书介绍:第1篇用一个例子,分三个层次,快速而轻松地将读者引入程序设计之途,同时引入算法分析与测试设计相结合的程序设计方法,为进一步学习奠定基础。第2篇通过数组、结构体和指针三种构造数据类型的应用,开阔读者程序设计的眼界。第3篇从几个经典问题入手,通过穷举、迭代、递归、计算机模拟、常用算法设计方法的介绍,将读者的逻辑思维训练纳入科学轨道。第4篇介绍一些重要语法问题的细节,使读者在发挥C语言优势方面得到提升。

第1篇 程途启步 2

第1单元 简单程序设计 2

1.1 C语言程序主框架 2

1.1.1 用伪代码描述的简单计算器程序算法 2

1.1.2 将伪代码描述的算法逐步细化为C程序 2

1.2 数据类型与数据形式 3

1.2.1 数据类型 3

1.2.2 程序中的数据形式及其引用方式 4

1.3 标识符与声明 6

1.3.1 标识符 6

1.3.2 声明 6

1.3.3 变量的声明与初始化 7

1.4 操作符 8

1.4.1 赋值操作符与赋值表达式 8

1.4.2 算术操作符与算术表达式 8

1.4.3 操作符的优先级与结合性 9

1.5 函数 9

1.5.1 函数及其应用过程 10

1.5.2 函数调用与函数返回 11

1.5.3 函数定义 11

1.5.4 局部变量 12

1.5.5 函数声明 14

1.5.6 main()函数 15

1.5.7 函数库、头文件与文件包含命令 15

1.6 格式化输入/输出函数 16

1.6.1 printf()函数的基本用法 16

1.6.2 scanf()的基本用法 17

1.7 C程序的编译与执行 19

1.7.1 C语言程序的编译与连接 19

1.7.2 程序中的错误和异常 20

1.7.3 程序测试 22

1.7.4 设计用户友好的程序 23

习题1 23

第2单元 选择程序设计 27

2.1 可选择计算类型的计算器程序算法分析 27

2.1.1 主函数的算法分析 27

2.1.2 计算函数calculate()的算法分析 28

2.1.3 判等操作符与关系操作符 28

2.2 if-else型选择结构 29

2.2.1 用if-else结构实现的calculate()函数 29

2.2.2 if-else结构的应用特点 30

2.2.3 良好的程序书写风格 32

2.3 选择结构的程序测试 34

2.3.1 白箱测试法 34

2.3.2 等价分类法 35

2.4 字符类型 38

2.4.1 ASCⅡ码 38

2.4.2 char类型的基本特点 39

2.4.3 转义字符 39

2.4.4 字符的输入/输出 40

2.5 浮点类型 41

2.5.1 浮点类型取值范围与表数精度 41

2.5.2 浮点类型变量和字面量 42

2.5.3 浮点类型数据的操作 42

2.6 switch型选择结构 43

2.6.1 基于整数值匹配的选择结构——switch结构 43

2.6.2 一个字符分类程序 44

2.6.3 用switch结构实现的calculate()函数 47

2.6.4 switch结构与if-else结构的比较 48

习题2 49

第3单元 重复程序设计 56

3.1 可连续计算的计算器程序的算法分析 56

3.1.1 主函数初步算法 56

3.1.2 主函数算法细化 56

3.1.3 重复结构的C语言实现途径 57

3.2 while结构 57

3.2.1 while结构的基本机理 57

3.2.2 使用while结构的可连续计算的计算器主函数 57

3.2.3 逗号操作符 59

3.3 do-while结构 59

3.3.1 do-while结构的基本机理 59

3.3.2 使用do-while结构的可连续计算的计算器程序主函数 60

3.4 for结构 60

3.4.1 for结构的基本机理 60

3.4.2 使用for结构的可连续计算的计算器程序主函数 61

3.4.3 计数型重复结构 62

3.4.4 复合赋值操作符与增值、减值操作符 66

3.5 重复结构的程序测试 67

3.5.1 基于路径覆盖的重复结构测试 67

3.5.2 边值分析法与重复结构测试 67

3.5.3 基于因果分析的程序测试 68

3.6 在重复体内控制重复过程 71

3.6.1 跳出当前层控制结构语句break 72

3.6.2 提前结束当前重复体语句continue 72

3.6.3 实例:求素数 72

习题3 74

第2篇 组织数据 86

第4单元 同类型数据的聚合类型:数组 86

4.1 一维数组 86

4.1.1 数组的特点 86

4.1.2 数组的定义 87

4.1.3 数组初始化 87

4.1.4 访问下标变量 89

4.2 二维数组 90

4.2.1 二维数组的概念 90

4.2.2 二维数组的初始化 91

4.2.3 访问二维数组元素 92

4.3 字符串 93

4.3.1 字符串字面量 93

4.3.2 字符串变量 94

4.3.3 字符串的输入/输出 95

4.3.4 字符串操作库函数 98

习题4 102

第5单元 描述一类对象属性的聚合类型:结构体和共用体 107

5.1 结构体类型与结构体变量 107

5.1.1 结构体类型及其定制 107

5.1.2 结构体变量的声明与初始化 108

5.1.3 结构体变量及其分量的应用 109

5.2 用结构体数组存储一组学生信息 111

5.2.1 结构体数组的定义与初始化 111

5.2.2 结构体数组元素的访问 112

5.3 共用体类型 114

5.3.1 共用体类型的定制与共用体变量的定义 114

5.3.2 共用体类型与结构体类型的比较 115

5.3.3 共用体变量的应用 117

习题5 118

第6单元 指针 124

6.1 指针类型与指针变量 124

6.1.1 指针=基类型+地址 124

6.1.2 同类型指针间的赋值与判等操作 126

6.1.3 指针的递引用 127

6.1.4 悬空指针、空指针与void指针 128

习题6.1 129

6.2 数组的指针形式 131

6.2.1 数组名与指向数组元素的指针 131

6.2.2 指向数组元素指针的加减运算 133

6.2.2 指针与字符串 135

6.2.3 二维数组与指针 137

习题6.2 139

6.3 指向结构体变量的指针与链表 142

6.3.1 指向结构体类型变量的指针 142

6.3.2 链表及其特点 142

6.3.3 构建链表 144

习题6.3 146

6.4 动态存储分配 146

6.4.1 申请需要的存储空间 147

6.4.2 释放一个指针指向的存储空间 149

6.4.3 修改一个指针指向的存储空间大小 149

6.4.4 构建动态链表 150

习题6.4 154

第3篇 构建算法 156

第7单元 基础算法 156

7.1 穷举 156

7.1.1 搬砖问题 156

7.1.2 推断名次 159

习题7.1 163

7.2 迭代与递推 168

7.2.1 用二分迭代法求方程在指定区间的根 168

7.2.2 猴子吃桃子 171

7.2.3 用辗转相除法求两个正整数的最大公因子 173

习题7.2 176

7.3 递归 180

7.3.1 阶乘的递归计算 180

7.3.2 汉诺塔 182

习题7.3 185

第8单元 计算机模拟 187

8.1 随机问题模拟 187

8.1.1 产品随机抽样 187

8.1.2 用蒙特卡洛法求π的近似值 190

习题8.1 192

8.2 基于步长的模拟 192

8.2.1 事件步长法——中子扩散问题 192

8.2.2 时间步长法——盐水池问题 194

习题8.2 198

第9单元 数据处理 201

9.1 排序 201

9.1.1 直接选择排序 201

9.1.2 冒泡排序 203

习题9.1 206

9.2 查找 206

9.2.1 穷举查找 206

9.2.2 二分查找 207

习题9.2 208

第4篇 语海探幽 210

第10单元 算术数据类型及其转换 210

10.1 C数据类型概览 210

10.2 整数类型 211

10.2.1 有符号整数类型与无符号整数类型 211

10.2.2 标准整数类型与扩展整数类型 211

10.2.3 整数类型的极值宏 212

10.2.4 char类型 213

10.2.5 枚举 214

10.2.6 _Bool类型 216

10.3 浮点类型 216

10.3.1 浮点类型的值特性 216

10.3.2 浮点数据的舍入模式 217

10.3.3 浮点数据的求值特性 217

10.3.4 IEEE 754标准 218

10.3.5 关于浮点数的判等操作 218

10.3.6 _Complex类型和_Imaginary类型 218

10.4 数据类型转换 219

10.4.1 普通算术转换——提升拉齐规则 219

10.4.2 传送转换——与目的类型一致原则 221

10.4.3 数据的显式类型转换规则 222

10.4.4 数据类型转换注意事项 222

习题10 226

第11单元 C语言中的常量 229

11.1 字面量 229

11.1.1 整数字面量的表示和辨识 229

11.1.2 浮点类型字面量的表示和辨识 230

11.1.3 复合字面量 231

11.2 宏 232

11.2.1 宏定义 232

11.2.2 使用宏应当注意的几点 233

11.2.3 带参宏定义 234

11.3 const类型限定符 237

11.3.1 用const限定变量 237

11.3.2 用const限定数组 238

11.3.3 用const限定函数参数 239

11.3.4 用const限定指针 239

11.3.5 在多文件程序中共享一个const定义 240

习题11 241

第12单元 C程序中变量的访问属性 247

12.1 变量访问属性的概念 247

12.1.1 变量的存储类型与生存期 247

12.1.2 标识符的作用域 248

12.1.3 标识符的链接属性 249

12.2 C语言程序实体的存储类型 249

12.2.1 C程序中的局部变量 250

12.2.2 外部变量的定义与声明 251

12.2.3 初始化 255

习题12 256

第13单元 操作符、表达式与语句 261

13.1 操作符与表达式 261

13.1.1 算术操作符 261

13.1.2 逻辑表达式 262

13.1.3 位操作符 262

13.1.4 条件表达式 265

13.1.5 增值表达式和减值表达式 265

13.1.6 下标表达式与指针的加减操作 266

13.1.7 赋值操作 267

13.1.8 左值表达式 268

13.2 操作符的副作用与序列点 270

13.2.1 操作符的副作用与透明引用 270

13.2.2 基于序列点的副作用不叠加表达式规则 272

13.2.3 函数的副作用 274

13.3 语句 274

13.3.1 表达式语句、空语句和复合语句 274

13.3.2 控制语句 275

13.3.3 跳转语句 276

13.3.4 关于分号(;)的说明 276

习题13 276

第14单元 函数 280

14.1 函数参数 280

14.1.1 现代C语言函数参数不能空 280

14.1.2 C语言函数调用中的值结合 280

14.1.3 指针类型参数 282

14.2 函数定义与函数声明 289

14.2.1 函数定义 289

14.2.2 函数声明 290

14.3 内联函数 291

14.3.1 内联函数的概念 291

14.3.2 C99的内联函数定义 291

14.3.3 gcc的内联函数定义 292

14.3.4 内联函数的限制 292

习题14 292

第15单元 输入/输出 297

15.1 格式化输出函数printf() 297

15.1.1 printf()格式参数结构 297

15.1.2 printf()基本格式符 297

15.1.3 长度修饰符 298

15.1.4 域宽与精度说明 299

15.1.5 前缀修饰符 299

15.2 格式化输入函数scanf() 301

15.2.1 scanf()指针参数 301

15.2.2 scanf()格式参数结构 302

15.2.3 数值数据的输入控制 304

15.2.4 scanf()与输入缓冲区 305

15.2.5 字符型数据的输入控制 306

15.2.6 scanf()的停止与返回 309

15.3 C语言的文件操作 310

15.3.1 文件及其分类 310

15.3.2 FILE类型及其指针 312

15.3.3 C语言文件操作的一般过程 313

15.3.4 文件操作程序示例 316

习题15 318

附录 324

附录A C语言关键字 324

附录B C语言运算符的优先级和结合方向 324

附录C 编译预处理命令 325

C.1 宏定义 325

C.2 文件包含 326

C.3 条件编译 326

附录D C标准库头文件 326

附录E C语言常用标准库函数 327

E.1 数学函数 327

E.2 字符函数和字符串函数 328

E.3 输入/输出函数 329

E.4 动态内存分配函数 331

E.5 退出程序函数 331

E.6 数值转换函数 331

E.7 时间和日期函数 332

参考文献 333