当前位置:首页 > 工业技术
C语言与程序设计
C语言与程序设计

C语言与程序设计PDF电子书下载

工业技术

  • 电子书积分:14 积分如何计算积分?
  • 作 者:曹计昌,卢萍,李开编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2013
  • ISBN:9787121190391
  • 页数:436 页
图书介绍:本书是华中科技大学“C语言程序设计”精品课的主教材。全书为两部分:第一篇C语言,用28学时左右初步处理C语言的语法规则问题。第二篇程序设计,用32学时左右处理程序设计问题,并且在处理程序设计问题进一步加深对C的语法规则的理解和掌握,例如,库函数的实现、编译预处理的实现、词法元素的分析、处理器的C语言仿真、微型汇编程序设计、操作系统关于设备驱动程序统一接口的实现等。教材教学资源完备,包括教学课件、源程序包、课程设计资料,实验指导、习题解答等,同时,课程还建设有精品课程网站,提供上述资料的下载。
《C语言与程序设计》目录

上篇 C语言 1

第1章 概论 1

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

1.2 学习C语言程序设计的第一个例子 1

1.2.1 创建并运行第一个C程序 2

1.2.2 解释分析第一个C程序 3

1.3 C语言的产生、发展与语言特征 4

1.3.1 C语言的产生与发展 4

1.3.2 C语言的标准化 5

1.3.3 C语言的特征 6

1.4 计算机系统及内存编址 7

1.5 数和字符的编码表示 8

1.5.1 进位计数制 9

1.5.2 进位制数之间的转换 11

1.5.3 数的机器码表示 13

1.5.4 字符的编码表示 14

1.6 算法及其表示 15

1.6.1 算法的定义 15

1.6.2 算法的表示 16

1.6.3 算法的实现 18

1.7 学习C语言与程序设计的方法 18

本章小结 20

习题1 20

第2章 基本词法语法规则与程序元素 21

2.1 字符及词法元素 21

2.1.1 字符集 21

2.1.2 词法元素 21

2.2 语法规则 22

2.2.1 BNF范式 22

2.2.2 EBNF范式 23

2.2.3 语法图 23

2.3 标识符、关键字及分隔符 24

2.3.1 标识符 24

2.3.2 关键字 24

2.3.3 分隔符 25

2.4 基本数据类型 25

2.4.1 数据类型的分类 25

2.4.2 基本类型的名字 25

2.4.3 字符类型 26

2.4.4 整型类型 26

2.4.5 浮点类型 27

2.5 常量与变量 28

2.5.1 文字常量 28

2.5.2 符号常量 31

2.5.3 变量定义 33

2.6 运算符和表达式 33

2.6.1 C语言运算符简介 33

2.6.2 运算符的优先级和结合性 34

2.6.3 算术运算 35

2.6.4 关系运算 35

2.6.5 逻辑运算 36

2.6.6 自增和自减运算 37

2.6.7 赋值运算 39

2.6.8 条件运算 40

2.6.9 逗号运算 40

2.6.10 sizeof运算 41

2.7 位运算符和位表达式 42

2.7.1 按位求反(~) 42

2.7.2 按位与、或、加运算(&,|,^) 42

2.7.3 左移和右移运算(<<,>>) 42

2.7.4 位运算符应用举例 43

2.7.5 打印整数各位 44

2.8 类型转换 45

2.8.1 整数提升 45

2.8.2 算术转换 45

2.8.3 赋值转换 46

2.8.4 强制类型转换 46

2.9 枚举类型 47

2.9.1 枚举类型的定义 47

2.9.2 用枚举类型定义符号常量 48

2.9.3 枚举变量的声明 48

2.10 新增数据类型 49

2.10.1 long long类型 49

2.10.2 布尔类型 49

2.10.3 复数类型 50

本章小结 51

习题2 52

第3章 基本的标准输入与输出 54

3.1 字符输入与输出 54

3.1.1 字符输出函数putchar 54

3.1.2 字符输入函数getchar 55

3.2 字符串输入与输出 57

3.2.1 字符串输出函数puts 57

3.2.2 字符串输入函数gets 57

3.3 格式化输入与输出 58

3.3.1 格式化输出函数printf 58

3.3.2 格式化输入函数scanf 62

本章小结 70

习题3 70

第4章 流程控制 72

4.1 C语句分类 72

4.2 表达式语句 72

4.3 复合语句 73

4.4 if语句 74

4.5 switch语句 77

4.6 while语句 80

4.7 for语句 84

4.8 do-while语句 87

4.9 goto语句和标号语句 92

4.10 break语句、continue语句和return语句 94

4.11 嵌套循环程序设计 97

4.11.1 嵌套循环 97

4.11.2 枚举 100

4.11.3 筛法 101

4.11.4 递推 101

本章小结 102

习题4 102

第5章 函数与程序结构 104

5.1 C程序的一般结构 104

5.1.1 结构化程序设计 104

5.1.2 蒙特卡罗模拟:猜数游戏 104

5.1.3 C程序的结构 108

5.2 函数的定义与函数原型 108

5.2.1 函数的定义 108

5.2.2 函数的返回值 109

5.2.3 函数的声明 110

5.2.4 新增关键字inline和_Noretrn 111

5.3 函数调用与参数传递 112

5.3.1 函数调用 112

5.3.2 参数的值传递 114

5.4 作用域与可见性 115

5.4.1 局部变量和全局变量 115

5.4.2 作用域规则 117

5.4.3 可见性 118

5.5 存储类型 118

5.5.1 存储类型auto 118

5.5.2 存储类型extem 119

5.5.3 存储类型static 120

5.5.4 存储类型register 123

5.5.5 新增存储类型_Thread_local 123

本章小结 124

习题5 124

第6章 编译预处理 126

6.1 文件包含#include 126

6.2 宏定义#define 126

6.2.1 无参宏定义 127

6.2.2 带参宏定义 127

6.2.3 空宏参数 128

6.2.4 可变参数宏定义 128

6.2.5 通用类型宏 129

6.3 取消宏定义#undef 130

6.4 条件编译 130

6.4.1 #if、#ifdef和#ifndef指令 130

6.4.2 defined运算符 131

6.4.3 条件编译的应用 132

6.5 assert断言和静态断言 133

6.5.1 assert断言 133

6.5.2 静态断言 133

6.6 _func_预定义标识符 134

6.7 _Pragma预处理操作符 134

本章小结 134

习题6 135

第7章 数组 136

7.1 数组概述 136

7.2 一维数组 136

7.2.1 一维数组的声明 137

7.2.2 一维数组的使用 138

7.2.3 一维数组的初始化 138

7.2.4 一维数组的存储结构 139

7.2.5 一维数组的运算 139

7.2.6 一维数组作为函数参数 140

7.3 字符数组 141

7.3.1 字符数组的声明和使用 141

7.3.2 字符数组的初始化 142

7.4 字符串处理函数 142

7.4.1 串操作函数的设计及使用 143

7.4.2 数字串与数值之间转换的函数 146

7.4.3 C11标准中新增的Unicode字符集和Unicode字符串 148

7.5 多维数组 149

7.5.1 多维数组的声明与使用 150

7.5.2 多维数组的存储结构 151

7.5.3 多维数组的初始化 152

7.5.4 二维字符数组 153

7.6 数组的应用 154

7.6.1 矩阵乘法运算 154

7.6.2 基于分治策略的二分查找函数 155

7.6.3 逆波兰表达式的生成 156

7.6.4 利用值栈对逆波兰表达式进行求值 158

本章小结 160

习题7 160

第8章 指针 162

8.1 指针的概念与使用 162

8.1.1 指针的概念 162

8.1.2 指针的声明 163

8.1.3 指针的使用 164

8.2 指针运算 167

8.2.1 指针的算术运算 167

8.2.2 指针的赋值运算和关系运算 168

8.3 指针作为函数的参数 169

8.3.1 形参指针对实参变量的影响 169

8.3.2 指针作为函数形参的应用 171

8.4 数组的指针表示 171

8.4.1 一维数组的指针表示 172

8.4.2 一维数组参数的指针表示 174

8.4.3 用指向数组基本元素的指针表示多维数组 175

8.4.4 高精度计算——超长整数加法运算 176

8.5 指针数组 177

8.5.1 指针数组的声明及使用 177

8.5.2 多重指针 182

8.6 带参数的main函数 182

8.6.1 命令行参数 182

8.6.2 带参main函数的声明及使用 183

8.7 指针函数 184

8.7.1 指针函数的声明与定义 184

8.7.2 指针函数的使用 185

8.8 函数的指针 185

8.8.1 函数指针的声明 185

8.8.2 函数指针的应用 186

8.9 restrict和_Atomic类型修饰符 188

8.9.1 restrict类型修饰符 188

8.9.2 _Atomic类型修饰符 189

本章小结 190

习题8 190

第9章 结构与联合 192

9.1 结构概述 192

9.2 结构类型声明和结构变量的声明及初始化 192

9.2.1 结构类型的声明 192

9.2.2 结构变量的声明 194

9.2.3 结构变量的初始化 196

9.3 结构类型的引用与嵌套结构 196

9.3.1 结构变量的引用 197

9.3.2 通过成员选择运算符“.”访问成员 197

9.3.3 嵌套结构的声明 198

9.3.4 嵌套结构中结构成员的成员访问 199

9.4 结构类型的指针 200

9.4.1 结构指针的声明和赋值 200

9.4.2 通过“*”用结构指针访问结构变量的成员 201

9.4.3 通过成员选择运算符“?>”访问结构变量的成员 202

9.5 结构类型作为函数的参数和返回值 204

9.5.1 结构成员或结构变量作为函数的参数 204

9.5.2 结构成员或结构变量作为函数的返回值 205

9.5.3 结构类型的指针作为函数的参数或函数的返回值 207

9.6 结构数组 208

9.6.1 结构数组的声明及初始化 208

9.6.2 结构数组的使用 209

9.6.3 用结构的指针引用结构数组元素的成员 210

9.6.4 结构数组作为函数的参数 211

9.7 联合 213

9.7.1 联合类型的定义 213

9.7.2 联合变量的声明、初始化及联合成员的引用 213

9.8 字段结构 215

9.8.1 字段结构类型的定义 215

9.8.2 字段结构类型变量的声明及成员的引用 216

9.8.3 字段结构与联合的应用 217

本章小结 218

习题9 218

第10章 文件的输入与输出 220

10.1 文件概述 220

10.1.1 文件的概念 220

10.1.2 文本文件 220

10.1.3 二进制文件 221

10.1.4 文件的读写方式 221

10.1.5 C程序输入与输出的实现方法 222

10.2 FILE指针和标准流式文件 223

10.2.1 FILE结构类型 223

10.2.2 FILE指针 223

10.2.3 标准流式文件 224

10.3 流式文件的顺序输入与输出 224

10.3.1 文件的打开与关闭 224

10.3.2 文件的重定向 226

10.3.3 基于字符的文件读写 227

10.3.4 基于字符串的文件读写 229

10.3.5 文件的格式读写 230

10.3.6 文件的直接输入输出 233

10.3.7 命令执行函数 235

10.3.8 C11标准中新增关于文件操作的语言成分 235

10.4 流式文件的随机输入输出 237

10.4.1 文件定位函数 237

10.4.2 文件的随机读写 238

10.5 其他文件操作函数 241

10.5.1 文件访问函数 241

10.5.2 文件操作函数 242

10.5.3 出错检测处理函数 243

10.6 输入输出的底层接口 243

10.6.1 文件的顺序输入输出 243

10.6.2 文件的随机输入输出 245

本章小结 248

习题10 248

下篇 程序设计 250

第11章 复杂类型的指针 250

11.1 指向数组的指针 250

11.1.1 指向数组的指针的声明与定义 250

11.1.2 用数组名间访多维数组的元素 251

11.1.3 用指向数组的指针表示多维数组 253

11.1.4 多维数组参数的指针表示 255

11.2 用typedef定义类型表达式 257

11.2.1 类型表达式 258

11.2.2 用typedef定义类型表达式 258

11.3 复杂说明的解释 259

11.4 复杂说明的应用 260

本章小结 263

习题11 264

第12章 递归 265

12.1 递归概述 265

12.2 递归函数设计 266

12.2.1 字符串的递归处理 266

12.2.2 汉诺塔问题 267

12.2.3 排列问题 268

12.3 分治法与快速排序 269

12.4 回溯法 271

12.4.1 解空间与算法步骤 271

12.4.2 0-1背包问题 272

12.4.3 装载问题 274

12.5 动态规划 276

12.5.1 动态规划算法的基本步骤 276

12.5.2 0-1背包问题的动态规划算法 277

12.5.3 挖地雷问题 279

12.6 经典问题的递归程序设计 281

12.6.1 填字游戏 281

12.6.2 深度优先搜索:骑士游历问题 283

本章小结 285

习题12 285

第13章 排序 287

13.1 直接插入排序 287

13.2 Shell排序 289

13.3 归并排序 291

13.4 时间复杂度 293

13.5 排序程序设计 296

13.5.1 多关键字的排序 296

13.5.2 贪心法 298

13.5.3 海量数据的排序 299

本章小结 303

习题13 304

第14章 线性数据结构 305

14.1 动态存储分配 305

14.1.1 静态数据结构和动态数据结构 305

14.1.2 C语言的动态存储分配函数 305

14.1.3 对象对齐(Alignment of Objects) 307

14.2 动态数组设计 308

14.3 链表 310

14.3.1 自引用结构 310

14.3.2 动态创建结点 311

14.3.3 单向链表 312

14.3.4 链表的相关操作 314

14.3.5 双向链表 320

14.3.6 十字交叉链表 323

14.4 堆栈 329

14.4.1 线性表与堆栈 329

14.4.2 用链表实现堆栈 329

14.5 队列与广度优先搜索 332

14.5.1 队列的概念 332

14.5.2 基于结构数组的循环队列 332

14.5.3 用基于链表的队列实现广度优先搜索 333

本章小结 336

习题14 336

第15章 非线性数据结构 338

15.1 树与二叉树 338

15.1.1 树与二叉树的概念 338

15.1.2 二叉树的创建与操作 339

15.1.3 二叉搜索树 342

15.1.4 二叉树的应用 345

15.2 查找表与哈希(散列)函数 347

15.2.1 符号表的概念与哈希函数 347

15.2.2 实现简单宏替换的查找表 348

15.3 图 351

15.3.1 图的概念 351

15.3.2 图的存储结构与邻接表 352

15.3.3 图的深度优先遍历与广度优先遍历 354

15.3.4 图的路径搜索 359

15.4 图的应用 361

15.4.1 生成树与最小生成树 361

15.4.2 基于Kruskal算法求解最小生成树 362

15.4.3 基于Prim算法求解最小生成树 366

15.4.4 最短路问题 368

15.4.5 基于Dijkstr算法求解单源最短路径 369

本章小结 374

习题15 374

第16章 参数数目可变的函数与库函数 376

16.1 参数数目可变的函数设计 376

16.1.1 参数数目可变函数的定义 376

16.1.2 myprintf函数的实现 377

16.2 Linux下用户自定义库的设计及使用 380

16.2.1 allocation库的设计 380

16.2.2 allocation库的接口定义 381

16.2.3 allocation库函数的实现 382

16.2.4 生成allocation库文件 385

16.2.5 allocation库的使用 385

本章小结 386

习题16 386

第17章 图形图像处理程序设计 388

17.1 位图文件格式 388

17.1.1 位图图像与调色板 388

17.1.2 bmp文件格式 389

17.2 位图文件的操作 391

17.2.1 读写操作 391

17.2.2 位图像素数据的访问 392

17.2.3 图像处理 393

17.3 OpenCV计算机视觉库 397

17.3.1 VC6下安装与配置OpenCV 397

17.3.2 CodeBlocks下安装与配置OpenCV 398

17.3.3 OpenCV的基本数据结构 398

17.3.4 常用函数 398

17.4 OpenCV库函数的使用 400

17.4.1 图像的读入显示 400

17.4.2 鼠标和滑动条事件的处理 400

17.4.3 设计电子钟 403

本章小结 407

习题17 407

第18章 程序设计开发实例 408

18.1 问题描述 408

18.2 问题分析 409

18.2.1 问题的数学模型 409

18.2.2 最短路径算法 411

18.3 设计思路 412

18.3.1 用动态数组代替链表 413

18.3.2 线路序号和线路编号 413

18.3.3 线路名和站名的存储 413

18.3.4 查找表设计 414

18.3.5 邻接矩阵的生成 414

18.3.6 队列的入队和出队操作 414

18.3.7 最短路径的标记和输出 415

18.4 数据结构设计 415

18.4.1 地铁线路信息的存储结构 415

18.4.2 地铁站信息的存储结构 416

18.4.3 邻接矩阵的存储结构 416

18.4.4 辅助存储单元 416

18.5 算法设计 416

18.5.1 程序处理主流程 416

18.5.2 数据文件的输入处理 417

18.5.3 快速最短路径算法SPFA 418

18.6 程序实现 418

18.7 软件测试 424

本章小结 427

习题18 427

附录1 ASCII字符编码表 428

附录2 键盘编码表 429

附录3 C语言库函数 432

参考文献 436

相关图书
作者其它书籍
返回顶部