C语言从入门到精通(精粹版)
作者:梁义涛
出版社:人民邮电出版社
出版时间:2018-08-01
ISBN:9787115463401
定价:¥79.80
第0章 学习攻略
0.1 编程的魔力002
0.2 C语言的来源及特点002
0.3 让计算机开口说话004
0.4 C语言的用途005
0.5 学习C语言的方法005
第1章 步入C的世界—Hello C
1.1 C语言的开发环境009
1.1.1 C语言常用的开发环境009
1.1.2 VC++开发环境的安装009
1.1.3 Turbo C 2.0开发环境的安装012
1.2 认识常用开发环境013
1.2.1 认识VC++开发环境013
1.2.2 认识Turbo开发环境014
1.3 开始C编程—我的第1个C程序015
1.3.1 程序编写及运行流程015
1.3.2 在Visual C++ 6.0中开发C程序016
1.3.3 在Turbo C中开发C程序018
1.4 高手点拨020
1.5 实战练习020
第2章 C程序的组成
2.1 简单例子022
2.2 声明区022
2.2.1 头文件022
2.2.2 函数声明023
2.2.3 变量声明024
2.3 主函数025
2.4 函数定义区026
2.5 注释026
2.6 代码的规矩027
2.7 高手点拨027
2.8 实战练习028
第3章 C语言的基本构成元素—字符集、标识符和关键字
3.1 标识符和关键字030
3.1.1 标识符030
3.1.2 关键字030
3.2 常量030
3.2.1 什么是常量030
3.2.2 常量的声明032
3.3 常量的类别032
3.3.1 数值常量032
3.3.2 字符常量033
3.3.3 字符串常量034
3.3.4 符号常量034
3.4 综合应用—常量指针与指针常量036
3.5 高手点拨036
3.6 实战练习037
第4章 变量
4.1 变量040
4.1.1 什么是变量040
4.1.2 变量的定义与声明041
4.2 变量的类别041
4.2.1 局部变量041
4.2.2 形式参数042
4.2.3 全局变量043
4.3 变量的存储类型045
4.3.1 自动变量045
4.3.2 静态变量045
4.3.3 外部变量046
4.3.4 寄存器变量047
4.4 变量的赋值和初始化048
4.5 综合应用—根据变量的不同决定运行的结果050
4.6 高手点拨052
4.7 实战练习052
第5章 计算机如何识数—数制
5.1 二进制054
5.2 八进制055
5.3 十进制055
5.4 十六进制055
5.5 数制间的转换056
5.6 综合应用—数制转换057
5.7 高手点拨057
5.8 实战练习058
第6章 数据的种类—数据类型
6.1 数据类型的分类060
6.1.1 基本数据类型060
6.1.2 构造数据类型060
6.1.3 指针数据类型060
6.1.4 空类型061
6.2 整型061
6.3 字符型063
6.4 浮点型065
6.5 类型转换067
6.5.1 隐式转换067
6.5.2 显式转换069
6.6 综合应用—类型转换070
6.7 高手点拨070
6.8 实战练习071
第7章 C世界中的加减乘除—运算符和表达式
7.1 C中的运算符和表达式074
7.1.1 运算符074
7.1.2 表达式074
7.2 算术运算符和表达式075
7.2.1 算术运算符075
7.2.2 算术表达式075
7.2.3 应用举例075
7.3 关系运算符和表达式077
7.3.1 关系运算符077
7.3.2 关系表达式077
7.3.3 应用举例077
7.4 逻辑运算符和表达式078
7.4.1 逻辑运算符078
7.4.2 逻辑表达式079
7.4.3 应用举例079
7.5 条件运算符和表达式081
7.6 赋值运算符和表达式082
7.6.1 赋值运算符082
7.6.2 赋值表达式082
7.6.3 应用举例083
7.7 自增、自减运算符084
7.8 逗号运算符和表达式085
7.9 位运算符086
7.9.1 按位与运算符086
7.9.2 按位或运算符087
7.9.3 按位异或运算符087
7.9.4 按位取反运算符088
7.9.5 左移运算符088
7.9.6 右移运算符089
7.9.7 位运算赋值运算符090
7.9.8 位运算应用090
7.10 优先级与结合性093
7.10.1 算术运算符的优先级和结合性093
7.10.2 关系运算符的优先级和结合性093
7.10.3 逻辑运算符的优先级和结合性093
7.10.4 赋值运算符的优先级与结合性094
7.11 综合应用—根据输入值计算结果094
7.12 高手点拨095
7.13 实战练习095
第8章 顺序结构与选择结构
8.1 程序流程概述098
8.2 语句098
8.2.1 基本赋值语句098
8.2.2 表达式语句099
8.2.3 基本输入/输出语句099
8.2.4 控制语句101
8.2.5 空语句和复合语句101
8.3 顺序结构与语句102
8.4 选择结构103
8.4.1 选择结构103
8.4.2 单分支选择结构—if语句103
8.4.3 双分支选择结构—if-else语句106
8.4.4 多分支选择结构—if-else的嵌套形式107
8.4.5 多分支选择结构—switch语句111
8.5 综合应用—根据不同的利润计算奖金113
8.6 高手点拨114
8.7 实战练习115
第9章 C程序的流程—循环结构与转向语句
9.1 循环结构与语句118
9.1.1 循环结构118
9.1.2 当型循环语句—for语句119
9.1.3 当型循环语句—while语句122
9.1.4 直到型循环语句—do-while语句123
9.1.5 循环的嵌套125
9.2 转向语句128
9.2.1 goto语句129
9.2.2 break语句129
9.2.3 continue语句131
9.3 综合应用—简单计算器132
9.4 高手点拨134
9.5 实战练习134
第10章 用户与计算机的交互—输入和输出
10.1 标准输入/输出136
10.2 格式化输入/输出136
10.2.1 格式化输出函数—printf()136
10.2.2 格式控制字符138
10.2.3 格式化输入函数—scanf()142
10.3 字符输入/输出144
10.3.1 字符输出函数—putchar()144
10.3.2 字符输入函数—getchar()146
10.4 字符串输入/输出146
10.4.1 字符串输出函数—puts()146
10.4.2 字符串输入函数—gets()147
10.5 高手点拨148
10.6 实战练习148
第11章 数组
11.1 数组概述152
11.2 一维数组152
11.2.1 一维数组的定义152
11.2.2 一维数组的初始化155
11.2.3 一维数组元素的操作156
11.2.4 数组作为参数传递158
11.2.5 一维数组的应用举例160
11.3 二维数组162
11.3.1 二维数组的定义162
11.3.2 二维数组的初始化163
11.3.3 二维数组元素的操作163
11.3.4 二维数组的应用举例164
11.4 多维数组165
11.5 综合应用—杨辉三角166
11.6 高手点拨167
11.7 实战练习168
第12章 字符数组
12.1 字符数组概述170
12.2 字符数组170
12.2.1 字符数组的初始化170
12.2.2 字符数组的引用170
12.2.3 字符数组的输入与输出171
12.3 字符串172
12.3.1 字符串和字符数组172
12.3.2 字符串的输入/输出174
12.3.3 字符串应用举例175
12.4 综合应用—自动分类字符177
12.5 高手点拨178
12.6 实战练习179
第13章 程序的灵魂—算法与流程图
13.1 算法基础183
13.1.1 算法的概念183
13.1.2 算法的特性183
13.1.3 简单算法举例—解方程184
13.2 流程图的基础185
13.2.1 流程图中的元素及含义185
13.2.2 流程图的绘制186
13.3 如何表示一个算法188
13.3.1 用自然语言表示算法188
13.3.2 用流程图表示算法190
13.3.3 用传统流程图表示3种基本结构192
13.3.4 用N-S图表示算法193
13.3.5 用伪代码表示算法195
13.3.6 用计算机语言表示算法195
13.4 结构化程序设计方法196
13.5 综合应用—求解一元二次方程197
13.6 高手点拨199
13.7 实战练习200
第14章 基础算法
14.1 排序算法202
14.1.1 桶排序法202
14.1.2 冒泡排序法203
14.1.3 快速排序法204
14.2 栈、队列、链表算法206
14.2.1 队列206
14.2.2 栈209
14.2.3 链表211
14.2.4 模拟链表216
14.3 枚举算法218
14.4 搜索算法220
14.4.1 深度优先搜索220
14.4.2 广度优化搜索220
14.5 图的遍历算法221
14.5.1 深度和广度的区别221
14.5.2 图的深度优化遍历221
14.5.3 图的广度优化遍历223
14.6 综合应用—宝岛探险225
14.7 高手点拨227
14.8 实战练习228
第15章 C世界中的高级算法
15.1 模拟算法230
15.2 简单动态规划231
15.3 用递归实现回溯算法233
15.4 最短路径算法236
15.4.1 只有五行的算法—Floyd-Warshall236
15.4.2 Dijkstra 算法—单源最短边237
15.4.3 Bellman-Ford—解决负权边237
15.4.4 Bellman-Ford的队列优化238
15.4.5 最短路径算法对比分析238
15.5 树算法240
15.5.1 二叉树算法240
15.5.2 堆算法241
15.5.3 并查集241
15.6 综合应用—镖局运镖243
15.7 高手点拨245
15.8 实战练习246
第16章 数学在程序设计中的应用
16.1 常用数学函数248
16.2 质因数分解249
16.3 最大公约数的欧几里得算法251
16.4 加法原理与乘法原理252
16.5 排列与组合253
16.6 综合应用—圆排列、可重集排列254
16.7 高手点拨255
16.8 实战练习256
第17章 算法设计的常用思路
17.1 分治算法258
17.2 动态规划算法259
17.3 贪心算法261
17.4 回溯算法263
17.5 高手点拨265
17.6 实战练习265
第18章 算法竞赛实例
18.1 衡量程序质量的标准268
18.2 Hilbert曲线269
18.3 验证四色问题271
18.4 n女王问题273
18.5 跳马问题274
18.6 生成全部排列及其应用276
18.7 贪吃蛇游戏278
18.8 快速排序283
18.9 幻方284
18.10 高精度计算288
18.11 高手点拨289
18.12 实战练习290
第19章 函数
19.1 函数概述293
19.1.1 什么是函数293
19.1.2 函数的分类294
19.2 函数的定义294
19.3 函数的返回值及类型297
19.3.1 函数的返回值297
19.3.2 函数的类型298
19.4 函数的参数及传递方式300
19.4.1 函数的参数301
19.4.2 函数参数的传递方式302
19.5 函数的调用303
19.5.1 函数调用方式304
19.5.2 函数的声明305
19.5.3 函数的嵌套调用307
19.5.4 函数的递归调用308
19.6 内部函数和外部函数312
19.6.1 内部函数312
19.6.2 外部函数313
19.7 main()函数314
19.8 综合应用—用截弦法求方程的根315
19.9 高手点拨316
19.10 实战练习318
第20章 函数中的变量
20.1 局部变量与全局变量320
20.1.1 局部变量320
20.1.2 全局变量321
20.2 变量的存储类别323
20.2.1 自动类型(auto)324
20.2.2 寄存器类型(register)324
20.2.3 静态类型(static)325
20.2.4 外部类型(extern)327
20.3 综合应用—日期判断328
20.4 高手点拨329
20.5 实战练习330
第21章 文件
21.1 文件概述332
21.1.1 文件类型332
21.1.2 C如何操作文件—文件指针332
21.1.3 文件缓冲区333
21.2 文件的打开和关闭333
21.2.1 文件的打开—fopen()函数333
21.2.2 文件的关闭—fclose()函数334
21.2.3 文件结束检测—feof()函数335
21.3 文件的顺序读写335
21.3.1 文本文件中字符的输入/输出335
21.3.2 文本文件中字符串的输入/输出337
21.3.3 格式化输入/输出339
21.3.4 二进制文件的输入/输出—数据块读写340
21.4 文件的随机读写342
21.5 综合应用—文件操作343
21.6 高手点拨345
21.7 实战练习346
第22章 库函数概览
22.1 标准C库函数348
22.2 数学函数348
22.2.1 绝对值函数348
22.2.2 幂函数和开平方函数349
22.2.3 指数函数和对数函数350
22.2.4 三角函数350
22.2.5 取整函数和取余函数350
22.3 字符串处理函数351
22.3.1 字符串长度函数351
22.3.2 字符串连接函数352
22.3.3 字符串复制函数353
22.3.4 字符串比较函数353
22.3.5 字符串查找函数354
22.3.6 字符串填充函数355
22.4 字符处理函数356
22.4.1 字符类型判断函数356
22.4.2 字符大小写转换函数357
22.5 转换和存储管理函数358
22.5.1 转换函数358
22.5.2 存储管理函数359
22.6 随机函数360
22.6.1 初识随机函数360
22.6.2 使用随机函数361
22.7 日期和时间处理函数362
22.8 诊断函数363
22.9 命令行参数364
22.10 其他函数365
22.10.1 exit()函数366
22.10.2 qsort()函数366
22.11 综合应用—猜数字游戏367
22.12 高手点拨369
22.13 实战练习370
第23章 合理利用内存—位运算
23.1 二进制数372
23.1.1 二进制372
23.1.2 无符号数和有符号数372
23.2 位运算符372
23.2.1 按位与运算符373
23.2.2 按位或运算符373
23.2.3 按位异或运算符374
23.2.4 按位取反运算符375
23.2.5 左移运算符375
23.2.6 右移运算符375
23.2.7 位运算赋值运算符376
23.2.8 位运算应用377
23.3 位域379
23.4 综合应用—数制转换380
23.5 高手点拨381
23.6 实战练习382
第24章 结构体和联合体
24.1 结构体384
24.1.1 结构体类型384
24.1.2 定义结构体变量385
24.1.3 初始化结构体变量386
24.1.4 结构体变量的引用387
24.2 结构体数组388
24.2.1 定义结构体数组388
24.2.2 初始化结构体数组390
24.2.3 结构体数组元素的引用390
24.3 结构体与函数392
24.3.1 结构体作为函数的参数392
24.3.2 结构体作为函数的返回值394
24.4 联合体395
24.4.1 联合体类型395
24.4.2 联合体变量的定义396
24.4.3 联合体变量的初始化397
24.4.4 联合体变量的引用399
24.5 结构体和联合体的区别与联系400
24.6 综合应用—计算学生成绩400
24.7 高手点拨402
24.8 实战练习403
第25章 数据管理者—数据结构
25.1 数据结构概述406
25.2 线性表406
25.2.1 顺序表407
25.2.2 单链表410
25.3 栈416
25.3.1 栈的基本运算416
25.3.2 顺序栈的类型定义417
25.3.3 链式栈的类型定义417
25.4 队列417
25.4.1 队列的基本运算418
25.4.2 顺序队列类型定义418
25.4.3 链队列类型定义419
25.5 二叉树419
25.6 查找420
25.6.1 顺序查找420
25.6.2 折半查找422
25.7 排序423
25.7.1 冒泡排序法424
25.7.2 选择排序法425
25.7.3 插入排序法426
25.8 综合应用—链表的反转427
25.9 高手点拨430
25.10 实战练习439
第26章 内存的快捷方式—指针
26.1 指针概述443
26.1.1 指针的类型443
26.1.2 指针所指向的类型443
26.1.3 指针的值443
26.1.4 指针所占内存443
26.2 指针的算术运算444
26.2.1 指针与整数的运算444
26.2.2 指针与指针的运算445
26.3 运算符&和*446
26.4 指针表达式447
26.5 综合应用—使用指针进行排序448
26.6 高手点拨449
26.7 实战练习450
第27章 指针与数组
27.1 数组指针452
27.2 数组指针作为函数参数452
27.3 指针与字符数组453
27.4 指针数组与指针的指针454
27.5 综合应用—报数游戏456
27.6 高手点拨457
27.7 实战练习457
第28章 指针与函数
28.1 函数指针460
28.1.1 函数指针的定义460
28.1.2 函数指针的赋值461
28.1.3 通过函数指针调用函数461
28.2 指针函数462
28.3 指向函数的指针作为函数参数463
28.4 综合应用—日期的输出465
28.5 高手点拨466
28.6 实战练习466
第29章 指针与字符串
29.1 字符串指针468
29.1.1 创建字符串468
29.1.2 处理字符串469
29.1.3 输出字符串472
29.2 字符串指针作为函数参数472
29.3 字符指针变量与字符数组的区别474
29.4 综合应用—“回文”问题474
29.5 实战练习476
第30章 指针与结构体
30.1 结构体指针478
30.1.1 定义结构体指针478
30.1.2 初始化结构体指针478
30.1.3 使用指针访问成员478
30.1.4 给结构体指针赋值479
30.2 指向结构体变量的指针480
30.3 指向结构体数组的指针481
30.4 综合应用—创建简单链表482
30.5 高手点拨484
30.6 实战练习484
第31章 指针的高级应用与技巧
31.1 指向指针的指针486
31.2 void操作487
31.3 内存操作489
31.4 指针的传递491
31.5 综合应用—数值的降序排列492
31.6 高手点拨493
31.7 实战练习494
第32章 K-均值聚类算法
32.1 问题描述497
32.2 问题分析及实现497
32.2.1 问题分析497
32.2.2 问题实现497
32.2.3 程序运行499
32.3 开发过程常见问题及解决500
第33章 哥德巴赫猜想
33.1 问题描述502
33.2 问题分析及实现502
33.2.1 问题分析502
33.2.2 问题实现502
33.2.3 程序运行504
33.3 开发过程常见问题及解决504
第34章 猴子选大王游戏
34.1 问题描述506
34.2 问题分析及实现506
34.2.1 问题分析506
34.2.2 问题实现506
34.2.3 程序运行507
34.3 开发过程常见问题及解决508
第35章 迷宫求解
35.1 问题描述510
35.2 问题分析及实现510
35.2.1 问题分析510
35.2.2 问题实现510
35.2.3 程序运行513
35.3 开发过程常见问题及解决514
第36章 背包问题求解
36.1 问题描述516
36.2 问题分析及实现516
36.2.1 问题分析516
36.2.2 问题实现516
36.2.3 程序运行518
36.3 开发过程常见问题及解决518
第37章 火车车厢重排
37.1 问题描述520
37.2 问题分析及实现520
37.2.1 问题分析520
37.2.2 问题实现520
37.2.3 程序运行522
37.3 开发过程常见问题及解决522
第38章 哈夫曼编码的实现
38.1 问题描述524
38.2 问题分析及实现524
38.2.1 问题分析524
38.2.2 问题实现524
38.2.3 程序运行526
38.3 开发过程常见问题及解决526
第39章 八皇后问题的实现
39.1 问题描述528
39.2 问题分析及实现528
39.2.1 问题分析528
39.2.2 问题实现528
39.2.3 程序运行530
39.3 开发过程常见问题及解决530
第40章 商人过河游戏
40.1 问题描述532
40.2 问题分析及实现532
40.2.1 问题分析532
40.2.2 问题实现532
40.2.3 程序运行535
40.3 开发过程常见问题及解决536
第41章 K阶斐波那契序列的实现
41.1 问题描述538
41.2 问题分析及实现538
41.2.1 问题分析538
41.2.2 问题实现538
41.2.3 程序运行539
41.3 开发过程常见问题及解决540
第42章 最短路径的实现
42.1 问题描述542
42.2 问题分析及实现542
42.2.1 问题分析542
42.2.2 问题实现542
42.2.3 程序运行543
42.3 开发过程常见问题及解决544