《C语言开发技术详解》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:戴建华等编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2009
  • ISBN:9787121084904
  • 页数:541 页
图书介绍:C语言从产生到现在,已经成为最重要和最流行的编程语言之一。本书分上下两篇,分别介绍了C语言的基础和高级程序设计技巧。主要介绍C语言的语法基础,包括C语言概述,C程序的组成,C语言开发环境,数据的表示,表达式、运算符和语句,格式化输入/输出,分支结构程序设计,循环结构程序设计,使用数组,使用函数等内容。下篇主要介绍C语言的高级应用,包括处理字符串,数学函数和时间函数,常用算法应用,存储管理,控制鼠标,数据加密,数据压缩,图形编程,调用汇编程序,程序设计实例等内容。

第1篇 C语言基础 2

第1章 C语言概述 2

1.1 C语言发展历史 2

1.1.1 C语言发展过程 2

1.1.2 C语言标准 3

1.2 C语言的特点 4

1.2.1 简洁紧凑 4

1.2.2 灵活高效 4

1.2.3 强大的控制结构 5

1.2.4 可移植性 5

1.2.5 C语言的缺点 5

1.2.6 C与C+++的关系 6

1.3 C语言程序开发过程 6

1.3.1 定义程序目标 6

1.3.2 设计程序 6

1.3.3 编写源代码 7

1.3.4 编译和链接 7

1.3.5 测试 8

1.3.6 维护和修改 8

1.3.7 总结 8

1.4 创建第一个C程序 9

1.4.1 C程序结构 9

1.4.2 输入程序代码 9

1.4.3 编译链接程序 10

1.4.4 调试程序 11

1.4.5 程序语句的含义 12

第2章 C程序的组成 13

2.1 一个完整的C程序 13

2.1.1 分析程序目标 13

2.1.2 设计程序 13

2.1.3 编写代码 14

2.1.4 编译运行程序 15

2.2 C程序的组成 16

2.2.1 包含指令 16

2.2.2 定义常量 16

2.2.3 声明函数原型 17

2.2.4 main函数 17

2.2.5 程序语句 17

2.2.6 函数定义 18

2.2.7 注释 18

2.3 C程序组成总结 19

第3章 C语言开发环境 20

3.1 C语言开发环境简介 20

3.1.1 C语言开发环境的组成 20

3.1.2 常用开发环境 20

3.2 使用Dev-C++ 22

3.2.1 Dev-C++操作界面 22

3.2.2 设置选项 22

3.2.3 用Dev-C++创建C程序 23

3.2.4 编译程序 24

3.2.5 运行Dev-C++编译的程序 25

3.3 使用Visual C++ 26

3.3.1 Visual C++操作界面 27

3.3.2 用Visual C++创建C程序 27

3.3.3 编译程序. 29

3.3.4 运行Visual C++生成的程序 30

3.4 Linux C语言开发环境 31

3.4.1 Linux C语言开发环境的构成 31

3.4.2 代码编辑器. 31

3.4.3 GCC编译器 33

3.4.4 在emacs中编译C程序 33

3.4.5 在Linux中编写C程序 34

第4章 数据的表示 37

4.1 数据的存储 37

4.1.1 内存单元 37

4.1.2 字符的存储 38

4.1.3 数值的存储 38

4.2 数据类型简介 39

4.3 常量 40

4.3.1 直接常量 40

4.3.2 符号常量 40

4.4 变量 42

4.4.1 标识符 42

4.4.2 声明变量 43

4.4.3 变量初始化 45

4.5 整数类型 45

4.5.1 整数类型及存储 45

4.5.2 整型常量的表示 48

4.5.3 整型数据输出 50

4.6 字符类型 53

4.6.1 字符常量 53

4.6.2 字符变量及初始化 53

4.6.3 转义字符 54

4.6.4 字符型数据的输出 55

4.7 实数类型 56

4.7.1 实数类型及存储 56

4.7.2 实型常量的表示 58

4.7.3 实型变量 59

4.7.4 实型数据输出. 60

4.8 混合运算及类型转换 61

4.8.1 混合运算 61

4.8.2 强制数据类型转换 63

4.9 C99新增数据类型 64

4.9.1 逻辑型(_Bool) 64

4.9.2 复数类型(_Complex和_Imaginary) 64

4.10 总结 65

第5章 表达式、运算符和语句 66

5.1 表达式 66

5.1.1 简单表达式 66

5.1.2 逗号表达式 66

5.2 运算符 67

5.2.1 运算符概述 68

5.2.2 算术运算符 68

5.2.3 赋值运算符 73

5.2.4 关系运算符 75

5.2.5 逻辑运算符 76

5.2.6 位运算符 78

5.2.7 条件运算符 78

5.2.8 其他运算符 80

5.3 表达式的运算顺序 81

5.3.1 运算符优先级 81

5.3.2 运算符的结合性 82

5.3.3 自增自减运算符注意事项 83

5.4 语句 84

5.4.1 语句书写方式 84

5.4.2 表达式语句 85

5.4.3 空语句 86

5.4.4 复合语句 86

5.4.5 标号语句 87

第6章 格式化输出/输入 88

6.1 格式化输出—printf函数 88

6.1.1 printf函数的格式 88

6.1.2 printf的格式字符 89

6.1.3 修饰符 91

6.1.4 printf函数实例 93

6.1.5 动态设置输出宽度和精度 98

6.1.6 printf函数的返回值 99

6.1.7 理解输出列表 99

6.2 格式化输入—scanf函数 102

6.2.1 scanf函数的格式 102

6.2.2 scanf函数格式字符串 103

6.2.3 scanf函数注意问题 105

6.2.4 scanf函数的返回值 107

6.3 其他常用输入/输出函数 107

6.3.1 getchar函数 108

6.3.2 getch函数 108

6.3.3 gets函数 109

6.3.4 putch函数 110

6.3.5 puts函数 110

第7章 分支结构程序设计 112

7.1 分支程序流程 112

7.2 if语句 113

7.2.1 基本if语句 113

7.2.2 if else语句 116

7.2.3 再论条件表达式 117

7.3 嵌套if语句 117

7.3.1 嵌套if语句的形式 117

7.3.2 if语句嵌套实例 118

7.4 if else if语句 122

7.4.1 if else if语句格式 122

7.4.2 if else if实例 123

7.5 多路分支―switch 123

7.5.1 switch语句格式 123

7.5.2 switch实例 125

7.5.3 使用多重标号 126

7.5.4 switch和if比较 129

第8章 循环结构程序设计 130

8.1 循环结构的程序流程 130

8.2 while循环 131

82.1 while语句格式 131

8.2.2 理解循环条件 134

8.2.3 理解循环体 135

8.2.4 while循环需注意的问题 137

8.3 for循环 137

8.3.1 for语句格式 138

8.3.2 for语句的各种样式 139

8.3.3 for语句实例 142

8.4 do while语句 144

8.4.1 while语句不足 145

8.4.2 do while语句格式 146

8.5 循环嵌套 147

8.5.1 了解循环嵌套 147

8.5.2 循环嵌套的结构 149

8.5.3 循环嵌套实例 150

8.6 break和continue语句 154

8.6.1 break语句 154

8.6.2 continue语句 155

8.7 goto语句 157

第9章 使用数组 159

9.1 了解数组 159

9.1.1 使用数组的好处 159

9.1.2 数组的概念 160

9.1.3 数组的维数 161

9.2 一维数组 162

9.2.1 一维数组的声明 162

9.2.2 一维数组的存储 164

9.2.3 引用一维数组 165

9.2.4 一维数组的初始化 167

9.3 二维数组 168

9.3.1 二维数组的声明 169

9.3.2 二维数组的存储 169

9.3.3 二维数组的初始化 173

9.4 字符数组和字符串 174

9.4.1 字符数组 174

9.4.2 了解字符串 175

9.4.3 字符串的输入输出 177

9.5 数组的实例 178

9.5.1 字符串反转 178

9.5.2 查找最大数 179

9.5.3 数据排序 180

第10章 使用函数 183

10.1 函数的概念 183

10.1.1 函数概念 183

10.1.2 函数的分类 184

10.1.3 定义函数 185

10.1.4 main函数 186

10.2 函数的工作过程 187

10.2.1 程序结构 187

10.2.2 函数执行过程 187

10.3 编写函数 188

10.3.1 函数头 188

10.3.2 返回类型 189

10.3.3 参数列表 189

10.3.4 函数体 190

10.3.5 函数原型 190

10.4 函数的参数 192

10.4.1 参数传递过程 192

10.4.2 值调用 192

10.4.3 引用调用 194

10.4.4 数组调用 196

10.4.5 main的参数 198

10.5 函数调用 200

10.5.1 函数调用方式 201

10.5.2 被调函数的说明 201

10.5.3 返回函数结果 203

10.5.4 函数的嵌套调用 204

10.6 递归函数 205

10.6.1 函数的递归调用 205

10.6.2 递归的基本原理 207

10.6.3 递归函数设计 208

10.6.4 递归的优缺点 210

第11章 模块化程序设计方法 211

11.1 模块化程序设计概念 211

11.2 程序模块结构 212

11.2.1 C程序的组织 212

11.2.2 多文件模块的编译链接 213

11.2.3 文件包含. 215

11.2.4 内部函数与外部函数 216

11.3 变量的作用域 217

11.3.1 局部变量 217

11.3.2 在复合语句中的变量 218

11.3.3 全局变量 219

11.3.4 全局变量和局部变量同名 222

11.4 变量的存储类型 223

11.4.1 了解存储类型 223

11.4.2 自动变量 224

11.4.3 寄存器变量 225

11.4.4 外部变量 226

11.4.5 静态变量 227

11.5 函数、文件、变量的关系 729

第12章 使用指针 230

12.1 内存和变量 230

12.1.1 计算机内存 230

12.1.2 变量的存储 231

12.2 指针和简单变量 232

12.2.1 指针的概念 232

12.2.2 创建指针 233

12.2.3 初始化指针 234

12.2.4 使用指针 235

12.2.5 给函数传递指针 238

12.3 指针和数组 239

12.3.1 指针、数组和地址间的关系 239

12.3.2 指针运算 241

12.3.3 用指针操作数组元素 242

12.4 指向多维数组的指针 245

12.4.1 理解二维数组的地址 245

12.4.2 多维数组的指针表示 247

12.4.3 指向多维数组的指针变量 248

12.4.4 数组名作为函数的参数 252

12.4.5 指向数组的指针小结 255

12.5 指针和字符串 256

12.5.1 字符串的指针表示 256

12.5.2 字符串指针作函数参数 258

12.5.3 字符数组和字符指针的区别 259

12.6 指针数组 260

12.6.1 指针数组的概念 261

12.6.2 用指针数组处理字符串 263

12.6.3 指针数组作函数参数 264

12.7 指向指针的指针 266

12.7.1 理解指向指针的指针 266

12.7.2 二级指针变量与数组 268

12.8 指针和函数 272

12.8.1 返回指针的函数 272

12.8.2 指向函数的指针 274

12.9 指针和const 276

12.9.1 用const控制指针 277

12.9.2 const的几种特殊用法 277

12.10 指针总结 278

12.10.1 明确分辨各种指针类型 278

12.10.2 理解指针的4项内容 279

第13章 结构、联合和枚举 280

13.1 结构的概念 280

13.1.1 定义结构类型 280

13.1.2 定义结构变量 281

13.1.3 使用结构变量 282

13.2 结构的嵌套 284

13.2.1 包含数组的结构 284

13.2.2 包含指针的结构 285

13.2.3 包含结构的结构 285

13.3 初始化结构变量 288

13.4 结构数组 289

13.4.1 结构数组的定义和引用 290

13.4.2 结构数组的初始化 291

13.4.3 结构数组实例 291

13.5 结构指针 292

13.5.1 定义结构指针 292

13.5.2 使用结构指针 293

13.5.3 用指针处理结构数组 294

13.6 向函数传递结构 295

13.6.1 传递结构变量的值 295

13.6.2 传递结构指针到函数 296

13.7 联合 297

13.7.1 定义联合类型 297

13.7.2 使用联合变量 298

13.7.3 在结构中嵌套联合类型 298

13.8 枚举 300

13.8.1 定义枚举类型 300

13.8.2 使用枚举变量 301

13.9 使用typedef 301

第14章 位运算和位域 303

14.1 了解二进制数 303

14.1.1 数据的存储 303

14.1.2 整数的二进制表示 304

14.1.3 实数的二进制表示 305

14.1.4 使用其他进制. 305

14.2 位运算 307

14.2.1 位逻辑运算符 307

14.2.2 移位运算符 309

14.2.3 位运算的复合赋值运算符 310

14.2.4 位运算的用途 310

14.3 位域 311

14.3.1 定义位域结构 311

14.3.2 位域的使用 312

14.3.3 位域与联合的使用 314

第15章 文件输入/输出 316

15.1 文件与数据流 316

15.1.1 程序的输入/输出概念 316

15.1.2 流的概念 316

15.1.3 预定义的流 317

15.1.4 文件的基本概念 317

15.1.5 缓冲文件系统 318

15.2 文件的打开与关闭 318

15.2.1 文件指针 319

15.2.2 打开文件函数—fopen 319

15.2.3 关闭文件函数—fclose 321

15.3 从文件中读写字符 322

15.3.1 写字符函数—putc和fputc 322

15.3.2 读字符函数—getc和fgetc 323

15.3.3 合并文件 325

15.4 从文件中读写字符串 326

15.4.1 写字符串函数—fputs 326

15.4.2 读字符串函数—fgets 327

15.4.3 文件格式输出函数—fprintf 328

15.4.4 文件格式输入函数—fscanf 330

15.5 二进制文件的读写 332

15.5.1 写入整型数据函数—putw 332

15.5.2 读取整型数据函数—getw 333

15.5.3 写数据块函数—fwrite 333

15.5.4 读数据块函数—fread 335

15.5.5 文件检测函数 337

15.6 文件的随机读写 337

15.6.1 获取当前位置函数—ftell 337

15.6.2 重置文件位置指针函数—rewind 339

15.6.3 设置文件位置指针—fseek函数 340

15.7 管理缓冲区 342

15.8 输入/输出的重定向功能 343

15.8.1 操作系统的重定向功能 344

15.8.2 重定向输出 344

15.8.3 重定向函数—freopen 345

15.9 文件管理 346

15.9.1 重命名文件 346

15.9.2 删除文件 347

15.9.3 复制文件 348

15.9.4 创建临时文件 349

第16章 预处理 351

16.1 预处理简介 351

16.1.1 预处理功能 351

16.1.2 预处理命令 351

16.2 宏定义命令—#define 352

16.2.1 无参数的宏 352

16.2.2 带参数的宏 354

16.2.3 预处理操作符#和## 355

16.3 条件编译 357

16.3.1 使用#if 357

16.3.2 使用#ifdef和#ifndef 359

16.3.3 使用#defined和#undef 360

16.4 其他预处理命令 361

16.4.1 预定义的宏名 361

16.4.2 重置行号和文件名命令—#line 361

16.4.3 修改编译器设置命令—#pragma 362

16.4.4 产生错误信息命令—#error 362

16.5 内联函数 362

第2篇 C语言高级程序设计 365

第17章 处理字符串 365

17.1 字符串的存储 365

17.1.1 字符串的静态存储 365

17.1.2 字符串的动态存储 366

17.2 字符和字符串检测函数 368

17.2.1 字符检测函数简介 368

17.2.2 检测字符串长度函数—strlen 369

17.3 查找字符串 370

17.3.1 查找字符位置—strchr 370

17.3.2 查找相同字符—strspn 372

17.3.3 查找包含字符位置—strcspn 372

17.3.4 查找包含字符—strpbrk 373

17.3.5 查找子串―strstr 375

17.4 比较字符串 376

17.4.1 比较字符串—strcmp 376

17.4.2 比较部分字符串memcmp 377

17.4.3 比较时忽略大小写―stricmp 379

17.5 连接字符串 380

17.5.1 连接字符串—strcat 380

17.5.2 连接部分字符—stmcat 382

17.6 复制字符串 383

17.6.1 复制字符串—strcpy 383

17.6.2 复制部分字符—strncpy 384

17.6.3 更省事的复制函数—strdup 385

17.7 字符和字符串的转换 386

17.7.1 大小写字符的转换 386

17.7.2 转换大小写字符串 387

17.7.3 字符串与数值的转换 388

17.8 其他字符串函数 389

17.8.1 字符串反转—strrev 389

17.8.2 替换字符串中的字符—strset 390

17.8.3 分解字符串—strtok 391

第18章 数学函数和时间函数 393

18.1 数学函数 393

18.1.1 三角函数 393

18.1.2 双曲三角函数 394

18.1.3 指数函数和对数函数 395

18.1.4 其他数学函数 398

18.2 日期时间函数 399

18.2.1 表示日期时间的数据结构 399

18.2.2 获取日期时间 400

18.2.3 转换日期时间的表示形式 401

18.2.4 格式化日期时间 404

第19章 常用算法应用 408

19.1 排序 408

19.1.1 排序概述 408

19.1.2 冒泡排序法 409

19.1.3 选择排序法 410

19.1.4 插入排序法 411

19.1.5 Shell排序法 412

19.1.6 快速排序法 413

19.1.7 字符串的排序 414

19.2 查找 416

19.2.1 顺序查找 416

19.2.2 折半查找 417

19.3 队列 418

19.3.1 队列的概念 418

19.3.2 队列的操作 419

19.4 堆栈 422

19.4.1 堆栈的概念 422

19.4.2 堆栈的实现 422

19.5 链表 424

19.5.1 链表的概念 424

19.5.2 链表的基本操 425

19.5.3 测试链表的功能 430

第20章 存储管理 432

20.1 内存组织方式 432

20.1.1 内存组织方式 432

20.1.2 堆和栈的比较 433

20.2 C语言的动态存储管理 434

20.2.1 分配内存函数—malloc 434

20.2.2 另一个分配内存的函数—calloc 436

20.2.3 调整已分配内存—realloc 437

20.2.4 释放分配的内存—free 439

20.2.5 丢失的内存 440

第21章 控制鼠标 442

21.1 鼠标驱动程序 442

21.1.1 通过中断访问鼠标驱动程序 442

21.1.2 新的开发环境 443

21.1.3 调用中断服务 444

21.2 鼠标库函数 445

21.2.1 定义头文件mouse.h 445

21.2.2 通过中断控制鼠标 446

21.2.3 初始化鼠标 447

21.2.4 复位鼠标 447

21.2.5 移动鼠标 448

21.2.6 显示鼠标指针 448

21.2.7 隐藏鼠标指针 449

21.2.8 获取按下按钮信息 449

21.2.9 获取释放按钮信息 450

21.2.10 获取鼠标状态信息 451

21.2.11 获取鼠标指针位置信息 451

21.2.12 保存鼠标指针位置 452

21.2.13 捕获键盘或鼠标 452

21.2.14 鼠标指针区域 453

21.3 鼠标应用实例 454

21.3.1 了解屏幕函数 454

21.3.2 实例程序 455

第22章 数据加密 458

22.1 密码技术的概念 458

22.2 加密方法 458

22.2.1 换位加密法 459

22.2.2 替换加密法 462

22.2.3 位加密法 464

22.3 MD5加密简介 466

22.3.1 MD5简介 466

22.3.2 MD5算法描述 467

第23章 数据压缩 469

23.1 数据压缩基础 469

23.1.1 数据压缩概述 469

23.1.2 数据压缩相关概念 469

23.1.3 常见压缩算法简介 470

23.2 LZW原理 471

23.2.1 LZW的相关概念 471

23.2.2 LZW压缩过程 471

23.2.3 LZW解压缩过程 473

23.3 LZW实现代码 473

23.3.1 程序构思 473

23.3.2 定义数据结构 474

23.3.3 压缩函数 474

23.3.4 搜索哈希表 476

23.3.5 输出压缩数据 477

23.3.6 解压缩函数 478

23.3.7 输入编码数据 480

23.3.8 解码函数 480

23.3.9 主程序 481

第24章 图形编程 483

24.1 显示系统简介 483

24.1.1 显示系统基本概念 483

24.1.2 显示卡种类 484

24.1.3 显示模式 484

24.2 绘图基础 486

24.2.1 设置显示模式 486

24.2.2 控制显示缓冲区 487

24.3 图形函数 488

24.3.1 绘制点 488

24.3.2 读取点的信息 489

24.3.3 绘制直线 489

24.3.4 绘制矩形 491

24.3.5 绘制圆 492

24.3.6 绘制多边形 493

24.4 编辑图形 494

24.4.1 复制图形 494

24.4.2 移动图形 495

24.4.3 保存图形 495

24.4.4 载入图形 496

第25章 调用汇编程序 498

25.1 AT&T汇编简介 498

25.1.1 了解汇编的两种格式 498

25.1.2 将C语言输出为汇编程序 500

25.2 GCC内嵌汇编 501

25.2.1 基本内联汇编 501

25.2.2 扩展内联汇编 501

25.2.3 内联汇编实例 505

25.3 调用汇编程序 507

25.3.1 C编译程序的调用约定 507

25.3.2 C语言调用汇编的结构 508

25.3.3 建立汇编函数的框架 509

25.3.4 调用汇编函数 510

第26章 程序设计实例 512

26.1 程序分析 512

26.1.1 模块划分 512

26.1.2 设计数据结构 513

26.2 头文件 514

26.3 主模块 515

26.3.1 main函数 515

26.3.2 检查初始化状态 516

26.3.3 检查登录密码 517

26.3.4 从文件创建链表 518

26.3.5 显示主菜单 519

26.3.6 将链表保存到文件 522

26.4 输入员工信息 523

26.5 查询员工信息 525

26.5.1 查询子菜单 525

26.5.2 查询函数 527

26.5.3 通用显示函数 528

26.6 显示员工信息 529

26.7 修改员工信息 530

26.7.1 修改子菜单 530

26.7.2 修改数据 532

26.8 删除员工信息 533

26.9 统计员工信息 535

26.10 重设系统密码 535

附录A ASCII关键字 537

附录B ANSI C关键字 540