《C语言从入门到精通 第2版》PDF下载

  • 购买积分:20 如何计算积分?
  • 作  者:
  • 出 版 社:
  • 出版年份:2016
  • ISBN:
  • 页数:0 页
图书介绍:

第1章 C语言的前世今生 1

1.1 C语言的起源 1

1.1.1 计算机语言的发展阶段 1

1.1.2 C语言的产生 3

1.2 为什么要选择C语言 4

1.2.1 选择C语言的好处 4

1.2.2 C语言的特点 5

1.2.3 如何学好C语言 6

1.3 第一个C语言程序 7

1.4 小结 8

习题 9

第2章 C程序开发步骤及开发环境 10

2.1 C程序的开发步骤 10

2.2 Visual Studio 2008开发环境介绍 11

2.2.1 使用Viisual Studio 2008新建项目 11

2.2.2 在Viisual Studio 2008的项目中新建程序文件 13

2.2.3 使用Viisual Studio 2008开发C语言程序 14

2.3 小结 16

习题 16

第3章 基本数据类型 17

3.1 写一个简单的C语言程序 17

3.2 C语言中的数据类型 19

3.3 变量与常量 21

3.3.1 变量 21

3.3.2 常量 23

3.4 整型变量 24

3.4.1 整型变量的定义 24

3.4.2 整型变量占用的字节数与表示范围 25

3.4.3 整型变量的存储 26

3.4.4 整型变量的赋值 27

3.4.5 一个简单的C程序——输出整型变量的值 27

3.5 实型变量 28

3.5.1 实型变量的定义与赋值 28

3.5.2 实型变量的表示范围 28

3.5.3 一个简单的C程序——输出实型变量的值 28

3.6 字符型变量 29

3.6.1 字符型变量的定义与赋值 29

3.6.2 字符型数据的存储形式 29

3.6.3 字符数据与字符串数据的区别 31

3.7 小结 31

习题 32

第4章 运算符与表达式 33

4.1 常见运算符初识 33

4.2 算术运算符与算术表达式 34

4.2.1 +、-、*、/、%——双目运算符 34

4.2.2 算术表达式 34

4.2.3 多种类型的数据混合运算——自动类型转换 35

4.2.4 强制类型转换 37

4.2.5 ++与-、+与-——单目运算符 37

4.3 赋值运算符与赋值表达式 39

4.3.1 直接赋值运算符与直接赋值表达式 39

4.3.2 赋值表达式中的类型转换 40

4.3.3 复合算术赋值运算符与表达式 45

4.4 关系运算符与关系表达式 46

4.4.1 关系运算符 46

4.4.2 关系表达式 46

4.5 逻辑运算符与逻辑表达式 48

4.5.1 逻辑运算符 48

4.5.2 逻辑表达式 48

4.6 逗号运算符与逗号表达式 50

4.6.1 逗号运算符 50

4.6.2 逗号表达式 50

4.6.3 逗号运算符应用举例 51

4.7 小结 52

习题 52

第5章 结构化程序开发(一) 54

5.1 算法及描述方法 54

5.1.1 什么是算法 54

5.1.2 伪码 55

5.1.3 流程图 56

5.2 控制结构 57

5.2.1 什么是语句 57

5.2.2 语句的分类 57

5.2.3 顺序结构程序设计 59

5.2.4 选择结构程序设计——if选择结构 64

5.2.5 选择结构程序设计——switch选择结构 72

5.2.6 条件运算符与条件表达式 77

5.2.7 选择结构程序设计应用举例 79

5.3 小结 82

习题 83

第6章 结构化程序设计(二) 86

6.1 为什么要有循环结构 86

6.1.1 如何重复输出100以内的整数 86

6.1.2 如何求连续的n个自然数的和 87

6.2 goto语句 88

6.2.1 goto语句——无条件转移语句 88

6.2.2 goto语句构成的循环语句——向前跳转 88

6.3 while循环语句 90

6.4 do-while循环语句 92

6.5 for循环语句 94

6.6 break语句和continue语句 98

6.6.1 为什么要有break语句 98

6.6.2 break语句 98

6.6.3 为什么要有continue语句 100

6.6.4 continue语句 100

6.7 循环结构的嵌套 102

6.8 循环结构程序设计应用举例 106

6.9 小结 110

习题 110

第7章 数组 114

7.1 为什么引入数组 114

7.1.1 多变量的解决之路——引入数组 114

7.1.2 认识数组 115

7.2 一维数组 116

7.2.1 声明一维数组 116

7.2.2 引用一维数组 117

7.2.3 初始化一维数组的几种方式 118

7.2.4 一维数组应用举例 118

7.3 二维数组 124

7.3.1 为什么引入二维数组——维度的出现 124

7.3.2 声明二维数组 127

7.3.3 引用二维数组 127

7.3.4 初始化二维数组的几种方式 128

7.3.5 二维数组应用举例 130

7.4 字符数组与字符串 134

7.4.1 声明字符数组与初始化 134

7.4.2 引用字符数组 135

7.4.3 字符数组与字符串 135

7.4.4 字符数组的输入与输出 136

7.4.5 字符串的相关函数 137

7.4.6 字符串应用举例 141

7.5 小结 145

习题 145

第8章 函数 150

8.1 函数初识与函数的分类 150

8.1.1 为什么要有函数 150

8.1.2 函数的分类 151

8.2 函数的定义 152

8.2.1 无参函数的定义 152

8.2.2 有参函数的定义 152

8.2.3 有参函数传统的定义方式 153

8.3 函数的参数与函数返回值 153

8.3.1 实际参数与形式参数 154

8.3.2 函数返回值 155

8.4 函数的调用 156

8.4.1 函数的一般调用 157

8.4.2 函数原型 159

8.4.3 函数的嵌套调用 161

8.5 函数的递归调用 163

8.5.1 递归调用的定义 164

8.5.2 递归调用应用举例 164

8.6 数组作为函数的参数 167

8.6.1 数组元素作为函数参数 167

8.6.2 数组名作为函数参数 169

8.6.3 多维数组名作为函数参数 172

8.7 变量的作用域 173

8.7.1 局部变量 173

8.7.2 全局变量 175

8.8 变量的存储类别 178

8.8.1 自动变量 178

8.8.2 静态变量 178

8.8.3 寄存器变量 180

8.8.4 外部变量 180

8.9 内部函数与外部函数 183

8.9.1 内部函数 183

8.9.2 外部函数 183

8.10 小结 184

习题 185

第9章 指针 190

9.1 地址和指针 190

9.1.1 什么是地址 190

9.1.2 什么是指针——间接存取 191

9.2 指针与变量 192

9.2.1 定义指针变量 192

9.2.2 引用指针变量 193

9.2.3 指针变量作为函数参数 196

9.3 指针与数组 198

9.3.1 指向数组元素的指针与指向数组的指针 198

9.3.2 指向多维数组的指针变量 201

9.3.3 数组名(指针)作为函数参数 205

9.3.4 指针数组 212

9.3.5 二级指针 213

9.4 指针与字符串 214

9.4.1 字符串指针 214

9.4.2 字符串指针作为函数参数 215

9.4.3 字符指针数组 217

9.4.4 指针数组作为main的参数 218

9.5 指针与函数 220

9.5.1 函数指针——指向函数的指针 220

9.5.2 函数指针作为函数参数 221

9.5.3 指针函数——返回指针值的函数 224

9.5.4 void指针 225

9.6 指针与const 226

9.6.1 常量指针——指向常量的指针 226

9.6.2 指针常量——指针不可以改变 227

9.6.3 常量指针常量——指向常量的指针常量 227

9.7 小结 228

习题 229

第10章 预处理命令 233

10.1 宏定义——#define 233

10.1.1 不带参数的宏定义 233

10.1.2 带参数的宏定义 235

10.1.3 条件编译命令中的运算符——#和## 237

10.2 文件包含命令——#include 238

10.2.1 文件包含命令的两种方式 238

10.2.2 文件包含命令应用举例 239

10.3 条件编译命令 240

10.3.1 条件编译命令——#ifdef 240

10.3.2 条件编译命令——#ifndef 242

10.3.3 条件编译命令——#if 242

10.4 小结 243

习题 243

第11章 结构体与联合体 246

11.1 结构体 246

11.1.1 为什么要有结构体 246

11.1.2 定义结构体类型 247

11.1.3 定义结构体变量 248

11.1.4 引用结构体变量 249

11.1.5 初始化结构体变量 250

11.2 结构体数组 252

11.2.1 定义结构体数组 252

11.2.2 初始化结构体数组 253

11.2.3 结构体数组应用举例 254

11.3 指针与结构体 256

11.3.1 指向结构体变量的指针 257

11.3.2 指向结构体数组的指针 258

11.3.3 结构体变量作为函数的参数 260

11.3.4 指向结构体变量的指针作为函数的参数 261

11.4 用typedef定义类型 262

11.4.1 使用typedef定义类型 262

11.4.2 typedef应用举例 264

11.5 联合体 265

11.5.1 定义联合体类型及变量 265

11.5.2 引用联合体 266

11.5.3 使用联合体应注意的问题 266

11.5.4 联合体的应用举例 267

11.6 枚举类型 269

11.6.1 定义枚举类型及变量 269

11.6.2 使用枚举类型的一些说明 270

11.6.3 枚举类型应用举例 270

11.7 小结 272

习题 273

第12章 链表 276

12.1 链表的相关概念 276

12.1.1 为什么要有链表——节省内存单元,不用事先定义空间大小 276

12.1.2 什么是链表 277

12.1.3 动态内存分配 278

12.2 链表的操作 279

12.2.1 创建链表 279

12.2.2 输出链表 281

12.2.3 链表的查找操作 282

12.2.4 链表的插入操作 282

12.2.5 链表的删除操作 284

12.3 链表应用举例 286

12.3.1 直接插入排序——使用链表实现 286

12.3.2 一元多项式的相加 292

12.4 小结 297

习题 298

第13章 文件 301

13.1 文件的相关概念 301

13.1.1 为什么要有文件 301

13.1.2 文件的分类 302

13.1.3 文件类型指针 302

13.2 打开文件与关闭文件 303

13.2.1 打开文件 303

13.2.2 关闭文件 304

13.3 文件的读取与写入 304

13.3.1 fgetc函数与fputc函数 304

13.3.2 fread函数与fwrite函数 306

13.3.3 fscanf函数与fprintf函数——格式化读写函数 309

13.3.4 fgets函数与fputs函数——字符串读写函数 312

13.4 文件的定位 312

13.4.1 rewind函数——重置文件指针 312

13.4.2 fseek函数——定位文件指针 313

13.4.3 ftell函数——得到文件指针位置 315

13.5 出错检测 315

13.5.1 ferror函数 315

13.5.2 clearerr函数 316

13.6 小结 316

习题 316

第14章 常用算法 319

14.1 算法基础 319

14.1.1 什么是算法 319

14.1.2 算法的特性 321

14.1.3 算法设计的目标 321

14.1.4 算法的时间复杂度和空间复杂度 322

14.2 迭代与递推 323

14.2.1 算法思想 323

14.2.2 求一个数的平方根 323

14.2.3 角谷猜想 324

14.2.4 母牛生小牛问题 325

14.2.5 分西瓜 326

14.3 穷举法 327

14.3.1 算法思想 327

14.3.2 填数游戏 327

14.3.3 背包问题 328

14.3.4 五猴分桃 330

14.4 递归 331

14.4.1 算法思想 332

14.4.2 数制转换 332

14.4.3 求n个数中的最大者 333

14.4.4 字符串颠倒 334

14.5 分治 335

14.5.1 算法思想 335

14.5.2 求n个数的最大值和最小值 336

14.5.3 赛程安排问题 338

14.6 贪心算法 340

14.6.1 算法思想 340

14.6.2 加油站问题 340

14.6.3 找零钱问题 342

14.6.4 0-1背包问题 343

14.7 小结 347

习题 347

第15章 网络编程基础 349

15.1 网络相关概念 349

15.1.1 什么是计算机网络 349

15.1.2 网络协议 350

15.1.3 端口 350

15.1.4 TCP/IP参考模型 351

15.1.5 套接字 352

15.2 基于TCP的简单网络程序 352

15.2.1 基于TCP的socket编程 352

15.2.2 服务器端的程序实现 354

15.2.3 客户端程序的实现 359

15.3 基于UDP的简单网络聊天程序 361

15.3.1 基于UDP的socket编程 362

15.3.2 服务器端程序的实现 363

15.3.3 客户端程序的实现 364

15.4 小结 367

第16章 综合案例:图书管理系统 368

16.1 系统分析与设计 368

16.2 数据描述与存储 369

16.3 详细设计与代码实现 370

16.3.1 主函数模块 370

16.3.2 增加图书信息模块 373

16.3.3 修改图书信息模块 377

16.3.4 删除图书信息模块 381

16.3.5 借阅图书和归还图书模块 382

16.3.6 文件读写模块 385

16.4 程序调试与系统测试 386

16.5 小结 388

第17章 常见错误与程序调试 390

17.1 为什么要调试程序 390

17.2 常见错误 391

17.2.1 错误分类 391

17.2.2 常见错误举例 392

17.3 程序调试 395

17.3.1 如何利用Visual Studio 2008开发环境调试程序 395

17.3.2 程序调试应用举例 401

17.4 小结 410

参考文献 412