图书介绍
零基础学C语言 第2版PDF|Epub|txt|kindle电子书版本网盘下载
- 康莉,李宽,陈国建等编著 著
- 出版社: 北京:机械工业出版社
- ISBN:9787111372929
- 出版时间:2012
- 标注页数:404页
- 文件大小:86MB
- 文件页数:426页
- 主题词:C语言-程序设计
PDF下载
下载说明
零基础学C语言 第2版PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第一篇C语言基础1
第1章 踏上征程前的思想动员1
1.1为什么选择C语言1
1.2如何学好C语言2
1.3语言概述3
1.3.1什么是语言3
1.3.2什么是机器语言3
1.3.3什么是汇编语言4
1.3.4面向过程的语言4
1.3.5什么是C语言4
1.4深刻认识程序如何开发出来——程序开发周期5
1.4.1编辑C源代码6
1.4.2编译C源代码6
1.4.3连接目标文件7
1.4.4编译连接过程示例7
1.4.5运行程序9
1.5 VC++、C++、C和TC——认识开发环境和语言的区别9
1.6小结11
1.7上机实践11
第2章 跟我写Hello World12
2.1自己动手创建程序12
2.2认识LCC-Win32开发环境12
2.2.1为什么选择LCC-Win3213
2.2.2启动LCC-Win3213
2.2.3新建Hello World工程13
2.2.4定义新工程13
2.2.5添加源代码到工程14
2.2.6编译器设置15
2.2.7连接器设置15
2.2.8调试器设置15
2.2.9开始编辑代码16
2.3编译运行——欣赏你的杰作17
2.4查看代码如何一步一步被执行——调试排错(debug)18
2.4.1 debug一词的由来18
2.4.2设置断点19
2.4.3调试运行19
2.5小结20
2.6上机实践20
第3章 分解HelloWorld——最简单C程序的组成22
3.1 C程序概貌22
3.2为何有必要在代码里留下程序员的解释——注释23
3.3从哪里开始,到哪里结束——main函数24
3.4如何在屏幕上显示文字——函数调用25
3.5编译器如何认识printf 函数——#include预处理器指示符26
3.5.1函数声明及其作用26
3.5.2试验寻找#include的作用27
3.5.3 #include的作用28
3.6计算1+1——有些小作为的程序29
3.7数据从哪里来,又到哪里去——变量30
3.7.1变量在内存中的表现形式30
3.7.2编译器使用变量符号表30
3.7.3变量及其使用31
3.8自己设计C函数32
3.8.1在main函数中计算3个整数的平均数33
3.8.2在main函数中分3次计算3个整数的平均数33
3.8.3自编函数实现计算3个整数的平均数34
3.8.4如何自编写函数35
3.8.5试验观察总结函数声明和函数定义的意义36
3.9语句构成程序37
3.10向好程序员看齐——代码风格38
3.11小结38
3.12上机实践38
第4章 如何存储和获取数据——变量及数据类型40
4.1二进制、八进制、十六进制40
4.2计算机中如何表示数据——字节和位41
4.3内存是存储数据的“房间”——认识计算机内存43
4.4数据类型43
4.4.1整数类型44
4.4.2整数的正负——有符号和无符号46
4.4.3实数类型47
4.4.4字符类型48
4.4.5数据类型总结48
4.5常量49
4.5.1直接常量(字面常量)和符号常量49
4.5.2符号常量的优点51
4.5.3字面常量的书写格式52
4.5.4转义字符53
4.5.5字符串55
4.6变量55
4.6.1变量的声明56
4.6.2变量声明的意义56
4.6.3标识符和关键字57
4.6.4变量在内存中占据的空间和变量的值60
4.6.5变量赋初值62
4.7几个与变量相关的经典算法63
4.7.1累加和累乘63
4.7.2交换两个变量的值65
4.8小结66
4.9上机实践66
第5章 用屏幕和键盘交互——简单的输出和输入68
5.1输入—处理—输出:这就是程序68
5.2向屏幕输出——printf函数详解68
5.2.1 printf函数的一般形式69
5.2.2格式字符串的一般形式71
5.2.3 %d——十进制形式输出带符号整数71
5.2.4%最小宽度d格式符72
5.2.5 %ld格式符——以长整型方式输出73
5.2.6%o格式符——以八进制形式输出整数73
5.2.7 %x格式符——以十六进制的形式输出整数74
5.2.8 %u格式符——以十进制形式输出unsigned型数据74
5.2.9 %c格式符75
5.2.10 %s格式符——输出字符串76
5.2.11 %f格式符——输出实型数据78
5.2.12 %e格式符——以指数形式输出实数79
5.2.13 %g格式符——自动选择%f或者%e形式输出80
5.2.14 printf函数小结80
5.3字符输出putchar和字符串输出puts81
5.3.1 putchar函数(字符输出函数)81
5.3.2 puts函数(字符串输出函数)83
5.4接收键盘输入——scanf函数详解84
5.4.1一般形式84
5.4.2 scanf函数的工作原理85
5.4.3多数据输入分隔规则86
5.4.4格式字符88
5.4.5 scanf使用方法说明89
5.4.6使用scanf函数的注意事项91
5.5字符输入函数getchar93
5.6输入输出程序举例94
5.7小结97
5.8上机实践97
第6章 程序的基本构成——运算符和表达式98
6.1认识C中的运算符和表达式98
6.1.1认识运算符和表达式98
6.1.2操作数、运算符和表达式99
6.1.3 C运算符简介99
6.2算术运算符和算术表达式100
6.2.1基本的算术运算符100
6.2.2++自增、——自减运算符102
6.2.3算术表达式和运算符的优先级及结合性104
6.3逗号运算符和逗号表达式105
6.3.1逗号表达式的一般形式105
6.3.2逗号表达式的优先级和结合性106
6.4关系运算符和关系表达式107
6.4.1关系运算符的种类107
6.4.2关系表达式的一般形式107
6.5逻辑运算符和逻辑表达式109
6.5.1逻辑运算符109
6.5.2逻辑真值表109
6.6赋值运算符和赋值表达式110
6.6.1赋值表达式110
6.6.2复合赋值运算符111
6.6.3类型转换111
6.6.4左值与程序实体112
6.7强制类型转换和自动类型转换112
6.7.1强制类型转换112
6.7.2自动类型转换113
6.7.3函数调用时的转换115
6.8运算符的优先级115
6.8.1优先级、结合性汇总115
6.8.2短路表达式116
6.8.3 sizeof运算符与sizeof表达式116
6.9小结116
6.10上机实践117
第7章 程序的最小独立单元——语句118
7.1 5种语句类型118
7.1.1表达式语句118
7.1.2函数调用语句119
7.1.3空语句119
7.1.4复合语句(块语句)119
7.1.5流程控制语句120
7.2结构化程序设计120
7.2.1什么是算法120
7.2.2算法的表示120
7.2.3算法的伪代码表示121
7.2.4算法的流程图表示121
7.2.5 3种控制结构121
7.2.6算法示例122
7.3小结122
7.4上机实践122
第8章 条件判断——分支结构123
8.1简单的条件判断——if 语句123
8.1.1判断表达式123
8.1.2花括号和if结构体124
8.2两条岔路的选择——if else结构125
8.2.1关键在else125
8.2.2 if else结构体126
8.3多分支语句和分支语句嵌套127
8.3.1多分支127
8.3.2多分支if结构128
8.3.3分支语句嵌套130
8.4开关语句——switch结构131
8.4.1一般形式131
8.4.2为什么叫开关语句133
8.4.3 default语句135
8.4.4 if结构和switch结构之比较135
8.5小结135
8.6上机实践135
第9章 一遍又一遍——循环结构137
9.1构造循环137
9.1.1循环的条件137
9.1.2当型循环和直到型循环138
9.2简洁循环语句——while和do while结构138
9.2.1语法规则139
9.2.2代码块140
9.3最常用的循环语句——for结构140
9.3.1基本形式140
9.3.2表达式省略142
9.3.3循环终止和步长143
9.4循环嵌套143
9.4.1嵌套示例144
9.4.2嵌套的效率144
9.5与循环密切相关的流程转向控制语句145
9.5.1跳出循环——break145
9.5.2重来一次——continue146
9.5.3随心所欲—— goto147
9.6小结148
9.7上机实践148
第二篇 一窥C语言门庭149
第10章 写程序就是写函数——函数入门149
10.1什么是函数——根据输入进行处理返回输出149
10.1.1分割149
10.1.2库函数和自定义函数150
10.2自定义函数150
10.2.1定义的语法150
10.2.2函数定义范例151
10.2.3不要重复定义152
10.3函数调用与返回152
10.3.1形参和实参152
10.3.2传址调用154
10.3.3函数返回155
10.4告诉编译器有这么一个函数——函数原型声明156
10.4.1函数声明的语法156
10.4.2声明不同于定义158
10.4.3标准库函数的声明158
10.5面向过程的程序结构158
10.5.1模块化159
10.5.2函数的调用过程——模块的配合159
10.5.3一个入口一个出口159
10.5.4自顶向下,逐步求精159
10.5.5封装和可重用160
10.5.6高内聚,低耦合160
10.6小结160
10.7上机实践161
第11章 同一类型多个元素的集合——简单数组162
11.1什么是数组162
11.1.1数组是一大片连续内存空间162
11.1.2数组元素的访问163
11.2一维数组163
11.2.1一维数组的声明163
11.2.2一维数组元素的访问164
11.2.3数组的初始化164
11.2.4不合法的数组操作165
11.3二维数组166
11.3.1二维数组的声明166
11.3.2二维数组的初始化167
11.3.3二维数组应用举例167
11.4更高维的数组168
11.4.1高维数组的声明和元素访问169
11.4.2初始化169
11.4.3多维数组在内存中是如何排列元素的170
11.5小结170
11.6上机实践171
第12章C语言难点——指针初探172
12.1计算机中的内存172
12.1.1内存地址172
12.1.2内存中保存的内容173
12.1.3地址就是指针173
12.2指针的定义173
12.2.1指针变量的声明174
12.2.2指针变量的初始化174
12.2.3指针变量的值174
12.2.4取地址操作符175
12.2.5指针变量占据一定的内存空间175
12.2.6指向指针的指针176
12.3使用指针176
12.3.1运算符176
12.3.2指针的类型和指针所指向的类型177
12.3.3同类型指针的赋值178
12.3.4指针的类型和指针所指向的类型不同178
12.4指针的运算180
12.4.1算术运算之“指针+整数”或“指针-整数”180
12.4.2指针-指针181
12.4.3指针的大小比较182
12.5指针表达式与左值183
12.5.1指针与整型183
12.5.2指针与左值183
12.5.3指针与const183
12.6动态内存分配185
12.6.1动态分配的好处185
12.6.2 malloc与free函数185
12.6.3 calloc与free函数187
12.6.4 free函数与指针187
12.6.5内存泄漏188
12.6.6释放已经释放了的内存会出问题188
12.7小结189
12.8上机实践189
第13章 字符串及字符串操作190
13.1 C风格字符串190
13.1.1 C风格字符串的声明190
13.1.2 C风格字符串在内存中的表示190
13.2字符数组的输入输出191
13.2.1字符数组可以进行整体输入输出191
13.2.2使用gets函数读入整行输入192
13.2.3访问字符数组中某个元素193
13.2.4更便捷的输出——使用puts函数193
13.3字符串处理函数194
13.3.1理解:数组名是常指针194
13.3.2 strlen函数与size_t196
13.3.3字符串复制函数strcpy197
13.3.4字符串比较函数strcmp198
13.3.5字符串连接函数strcat199
13.3.6全转换为大写形式200
13.3.7链式操作201
13.4小结201
13.5上机实践201
第14章 结构体、共用体、枚举和typedef203
14.1结构体203
14.1.1结构体的定义203
14.1.2声明结构体变量204
14.1.3初始化结构变量204
14.1.4访问结构体成员205
14.1.5结构体定义的位置205
14.1.6结构体变量赋值206
14.2特殊结构体207
14.2.1结构体嵌套207
14.2.2匿名结构体210
14.3共用体210
14.3.1什么是共用体210
14.3.2共用体的定义210
14.3.3声明共用体变量211
14.3.4共用体变量的初始化211
14.3.5共用体成员访问211
14.3.6共用体赋值213
14.4结构体和共用体的内存差异213
14.4.1结构体变量和共用体变量内存形式的不同213
14.4.2结构体变量的内存大小213
14.4.3字节对齐214
14.4.4最宽基本类型215
14.4.5共用体的大小216
14.5枚举类型216
14.5.1枚举类型的定义216
14.5.2声明枚举变量217
14.5.3枚举常量是什么217
14.6给类型取个别名——typedef218
14.6.1 typedef基本用法218
14.6.2 #define用法218
14.7小结219
14.8上机实践219
第15章 如何节省内存——位运算220
15.1什么是位运算220
15.1.1开灯关灯220
15.1.2改变状态220
15.2位逻辑运算符221
15.2.1位取反操作221
15.2.2位与运算221
15.2.3位或运算221
15.2.4位异或221
15.2.5实例分析222
15.3移位运算223
15.3.1基本形式223
15.3.2移位举例223
15.4小结224
15.5上机实践224
第三篇C语言进阶227
第16章 存储不仅仅局限于内存——文件227
16.1什么是文件227
16.1.1文件227
16.1.2流228
16.1.3重定向228
16.1.4文件的处理形式——缓冲区和非缓冲区228
16.1.5文件的存储形式——文本形式和二进制形式229
16.2 C语言如何使用文件229
16.2.1文件型指针229
16.2.2文件操作的步骤230
16.3文件的打开与关闭230
16.3.1打开文件——fopen230
16.3.2打开是否成功231
16.3.3关闭文件——fclose232
16.4文件的读写232
16.4.1读写的相对参照232
16.4.2如何判断文件已经结束232
16.4.3字符读写函数——fgetc和fputc233
16.4.4字符串读写函数——fgets和fputs234
16.4.5块读写函数——fread和fwrite236
16.4.6格式化文件输入输出——fprintf 与fscanf239
16.5文件的定位241
16.5.1移到开头——rewind241
16.5.2得到当前位置——ftell242
16.5.3移动指针——fseek242
16.6小结243
16.7上机实践243
第17章 灵活却难以理解——指针进阶245
17.1指针与数组245
17.1.1数组名指针245
17.1.2使用数组名常指针表示数组元素246
17.1.3指向数组元素的指针变量246
17.1.4指向数组的指针变量247
17.1.5指针数组248
17.2指针、结构体和结构体数组249
17.2.1两种访问形式249
17.2.2声明创建一个结构数组249
17.2.3结构数组的初始化250
17.2.4结构数组的使用251
17.2.5指向结构数组的指针251
17.3函数指针2
17.3.1函数名指针252
17.3.2指向函数的指针253
17.3.3函数指针类型254
17.3.4函数指针做函数参数256
17.3.5函数指针数组256
17.3.6指向函数指针的指针258
17.4小结258
17.5上机实践258
第18章 更深入的理解——函数进阶260
18.1参数传递的副本机制260
18.1.1传值调用的副本机制260
18.1.2传址调用的副本机制261
18.2函数返回值的副本机制264
18.2.1 return局部变量为什么合法264
18.2.2返回指针申请动态内存265
18.2.3不要返回指向栈内存的指针266
18.2.4返回指向只读存储区的指针266
18.3函数与结构体267
18.3.1结构体变量的传值和传址调用267
18.3.2结构体变量的成员作为函数参数268
18.3.3返回结构体的函数269
18.3.4返回结构体指针的函数270
18.4函数与数组270
18.4.1数组元素作为函数参数270
18.4.2数组名作为函数参数271
18.4.3多维数组名作为函数参数273
18.4.4数组名作为函数参数时的退化274
18.5递归274
18.5.1递归流程274
18.5.2递归两要素276
18.5.3效率与可读性276
18.6带参数的主函数276
18.7小结277
18.8上机实践277
第19章 生存期、作用域与可见域279
19.1内存分配279
19.1.1内存分区279
19.1.2变量的存储类别280
19.1.3生存期280
19.1.4作用域与可见域280
19.2 auto变量281
19.2.1定义格式281
19.2.2作用域和生存期282
19.2.3屏蔽282
19.2.4重复定义283
19.2.5初始化284
19.3 register变量284
19.3.1定义格式284
19.3.2使用举例285
19.4 extern变量286
19.4.1全局变量定义286
19.4.2全局变量声明286
19.4.3可见域287
19.4.4屏蔽289
19.4.5利与弊290
19.5 static变量291
19.5.1定义格式291
19.5.2静态局部变量291
19.5.3静态全局变量292
19.5.4 extern变量和static变量的初始化293
19.6函数的作用域与可见域294
19.6.1内部函数294
19.6.2外部函数295
19.7结构体定义的作用域与可见域295
19.7.1定义位置与可见域295
19.7.2允许重复定义296
19.8小结297
19.9上机实践297
第20章 编译及预处理299
20.1编译流程299
20.1.1编辑299
20.1.2预处理300
20.1.3编译300
20.1.4连接300
20.2程序错误301
20.2.1错误分类301
20.2.2编译错误301
20.2.3连接错误301
20.2.4逻辑错误302
20.2.5排错302
20.3预处理命令之宏定义302
20.3.1宏定义302
20.3.2不带参数的宏定义303
20.3.3带参数的宏定义304
20.3.4 #define定义常量与 const常量307
20.3.5文件包含307
20.3.6条件编译308
20.4小结310
20.5上机实践3
第21章 数据结构311
21.1链表311
21.1.1链表的结构311
21.1.2创建链表并遍历输出312
21.1.3链表的插入314
21.1.4链表结点的删除317
21.1.5链表的逆置319
21.1.6链表的销毁321
21.1.7综合实例321
21.1.8循环链表326
21.1.9双链表327
21.2栈和队列330
21.2.1栈的定义330
21.2.2栈的分类330
21.2.3栈的操作331
21.2.4函数与栈333
21.2.5队列334
21.3小结337
21.4上机实践337
第四篇C语言程序设计实例与面试题解析339
第22章C语言程序课程设计:游戏339
22.1黑白棋339
22.1.1程序功能要求339
22.1.2输入输出样例339
22.1.3程序分析340
22.1.4程序初始化341
22.1.5初始化图形设备341
22.1.6绘制棋盘341
22.1.7交替绘制黑白棋342
22.1.8游戏(同时判断是否有一方胜利)342
22.1.9小结357
22.2五子棋357
22.2.1程序功能要求357
22.2.2输入输出样例358
22.2.3程序分析358
22.2.4主函数程序设计360
22.2.5系统初始化361
22.2.6移动棋子模块361
22.2.7程序胜负判定365
22.2.8小结369
22.3扫雷游戏369
22.3.1程序功能要求369
22.3.2输入输出样例370
22.3.3程序分析370
22.3.4程序设计372
22.3.5初始化图形设备374
22.3.6事件处理模块377
22.3.7游戏处理部分382
22.3.8小结385
22.4速算24385
22.4.1程序功能要求385
22.4.2输入输出样例385
22.4.3程序分析386
22.4.4程序设计387
22.4.5扑克牌处理部分389
22.4.6程序运算部分392
22.4.7小结393
第23章面试题解析394
23.1基础知识394
23.1.1指针自增自减有什么不同394
23.1.2什么是递归394
23.1.3宏定义与操作符的区别395
23.1.4引用与值传递的区别395
23.1.5指针和引用有什么区别395
23.1.6什么是栈395
23.1.7 main函数执行前还会执行什么代码395
23.1.8 static有什么用途395
23.1.9定义int **a[3][4],则变量占用的内存空间为多少396
23.1.10什么是预编译396
23.1.11 int (*s[10])(int)表示什么意义396
23.1.12结构与联合有何区别396
23.2算法和思维逻辑知识396
23.2.1 100美元哪里去了397
23.2.2将16升水平均分给四个人397
23.2.3算出小王买了几瓶啤酒、几瓶饮料397
23.2.4找出不同的苹果398
23.2.5找出不同的球398
23.2.6猜自己的帽子颜色399
23.2.7三筐水果各是什么400
23.2.8最后剩下的是谁401
23.2.9聪明的商人402
23.2.10红球和白球402
23.2.11乌龟赛跑402
23.2.12投硬币402
附录ASCII编码表403