图书介绍
跟我学C语言PDF|Epub|txt|kindle电子书版本网盘下载
![跟我学C语言](https://www.shukui.net/cover/56/31056451.jpg)
- 陈锐,田建新编著 著
- 出版社: 北京:清华大学出版社
- ISBN:9787302330080
- 出版时间:2013
- 标注页数:651页
- 文件大小:252MB
- 文件页数:667页
- 主题词:C语言-程序设计
PDF下载
下载说明
跟我学C语言PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章C语言概述1
1.1为什么要选择C语言2
1.1.1选择C语言的好处2
1.1.2 C语言的特点2
1.1.3如何学好C语言3
1.2进制转换4
1.2.1十进制数的表示4
1.2.2二进制数的表示5
1.2.3二进制数、十六进制数和八进制数转换为十进制数6
1.2.4十进制数转换为二进制数6
1.2.5十进制数转换为十六进制数9
1.2.6十进制数转换为八进制数11
1.2.7二进制数与十六进制数、八进制数的转换12
1.3计算机中数的表示13
1.3.1计算机中的正数与负数表示14
1.3.2原码和补码14
1.3.3浮点数17
1.4小结19
第2章C语言开发环境21
2.1 Turbo C 2.0开发环境介绍22
2.1.1运行Turbo C 2.022
2.1.2 Turbo C 2.0环境设置23
2.1.3 Turbo C 2.0的使用25
2.2 Win-TC开发环境介绍27
2.2.1 Win-TC开发环境概述27
2.2.2 Win-TC的使用28
2.3 LCC开发环境介绍30
2.3.1使用LCC开发环境创建项目30
2.3.2 LCC开发环境的介绍32
2.3.3 LCC的使用33
2.4 Visual C+++ 6.0开发环境介绍34
2.4.1使用Visual C+++ 6.0新建项目34
2.4.2使用Visual C+++ 6.0新建源程序文件36
2.4.3使用Visual C+++ 6.0开发环境37
2.5小结38
第3章 基本数据类型39
3.1变量40
3.1.1为什么要使用变量40
3.1.2什么是变量——变量在计算机中的表示40
3.1.3如何定义变量41
3.1.4为什么要有数据类型41
3.1.5 C语言有哪些数据类型42
3.1.6什么符号可以作为变量名——用户定义的标识符43
3.1.7关键字——己经被占用的标识符44
3.1.8初识变量赋值44
3.2整型变量45
3.2.1为什么要使用整型变量45
3.2.2基本整型变量46
3.2.3基本整型变量的输入——使用scanf函数47
3.2.4基本整型变量的输出——使用printf函数49
3.2.5长整型变量——解决大整数问题50
3.2.6短整型变量——节省内存空间52
3.2.7无符号整型变量——只包括非负的整数53
3.2.8整型变量的应用举例54
3.3实型变量57
3.3.1为什么使用实型变量57
3.3.2单精度浮点型变量57
3.3.3双精度浮点型变量60
3.3.4长双精度浮点型变量61
3.3.5实型变量的应用举例62
3.4字符型数据类型64
3.4.1为什么要使用字符型变量64
3.4.2字符型变量64
3.4.3字符型数据的输入与字符型变量值的输出——使用和(null)65
3.4.4字符型变量的应用举例66
3.5常量68
3.5.1为什么使用常量68
3.5.2整型常量68
3.5.3浮点型常量69
3.5.4字符型常量与字符串型常量69
3.5.5常量与常数70
3.6小结70
习题70
第4章 运算符与表达式73
4.1表达式74
4.1.1运算符有哪些74
4.1.2什么是表达式74
4.1.3运算符的优先级与结合性75
4.1.4自动类型转换76
4.2算术运算符与算术表达式77
4.2.1基本算术表达式77
4.2.2自增表达式——+++a和a+++79
4.2.3自减表达式——--a和a--82
4.2.4算术运算符的混合运算——算术运算符的优先级与结合性83
4.2.5算术表达式应用举例84
4.3赋值运算符与赋值表达式及其应用86
4.3.1赋值运算符与赋值表达式86
4.3.2类型转换89
4.3.3赋值表达式的应用举例91
4.4关系运算符与关系表达式及其应用93
4.4.1关系运算符和关系表达式93
4.4.2关系表达式应用举例94
4.5逻辑运算符与逻辑表达式及其应用95
4.5.1逻辑运算符和逻辑表达式95
4.5.2逻辑表达式应用举例97
4.6逗号表达式98
4.6.1逗号运算符与逗号表达式99
4.6.2逗号表达式中应注意的问题99
4.6.3逗号表达式应用举例99
4.7小结100
第5章 顺序结构程序设计101
5.1语句和程序102
5.1.1什么是简单语句102
5.1.2为什么使用复合语句103
5.1.3什么是复合语句103
5.1.4使用复合语句应注意的问题104
5.1.5为什么要有程序105
5.1.6 C语言程序的框架结构106
5.2顺序结构程序设计107
5.2.1顺序结构程序设计的特点——自上而下执行每一个语句107
5.2.2顺序结构程序设计——求圆的面积107
5.2.3顺序结构程序——求一元二次方程ax 2+bx+c=0的根110
5.2.4顺序结构程序设计应用举例——将小写字母转换为大写字母111
5.3小结113
第6章 选择结构程序设计115
6.1条件运算符116
6.1.1为什么要有条件运算符116
6.1.2条件运算符与条件表达式116
6.2 if选择语句119
6.2.1为什么要有if选择语句——理解容易119
6.2.2 if选择语句——单分支选择结构120
6.2.3 if-else选择语句——双分支的选择结构124
6.2.4 if…else if…else选择语句——多分支选择结构126
6.2.5 if选择语句的嵌套131
6.2.6设置标志变量135
6.2.7 if选择语句与条件运算符——相互转换136
6.3 switch选择语句137
6.3.1 switch选择语句137
6.3.2 switch选择语句应用举例138
6.4选择结构程序设计应用举例143
6.5小结151
第7章 循环结构程序设计153
7.1为什么要有循环结构154
7.1.1如何重复输出多个hello world154
7.1.2如何求连续的n个自然数的和154
7.2 while循环语句155
7.2.1 while循环语句——当型循环155
7.2.2 while循环语句应用举例158
7.3 do-while循环语句160
7.3.1为什么要有do-while160
7.3.2 do-while循环语句——直到型循环160
7.3.3 比较while循环结构和do-while循环结构162
7.4 for循环语句165
7.4.1 for循环语句概述165
7.4.2 for循环语句的灵活性169
7.4.3几种循环语句的比较174
7.5 goto语句与goto语句构成的循环语句175
7.5.1 goto语句——无条件转移语句175
7.5.2 goto语句构成的循环语句——向前跳转176
7.5.3 goto语句与while语句、for语句的比较177
7.6 break语句178
7.6.1循环中的“提前开溜”178
7.6.2使用break语句179
7.7 continue语句181
7.7.1为什么要有continue语句181
7.7.2使用continue语句181
7.7.3 continue语句与break语句的区别182
7.7.4 continue语句应用举例183
7.8多重循环程序设计184
7.8.1为什么要有循环的嵌套——一层循环是不能解决所有问题的184
7.8.2循环的嵌套——循环结构中还可以有循环结构185
7.8.3多重循环应用举例——输出乘法口诀表187
7.9循环结构程序应用举例190
7.9.1循环结构程序应用举例——求π的近似值190
7.9.2循环结构程序应用举例——求101~200之间的所有质数193
7.9.3循环结构程序应用举例——质数问题的改进算法195
7.9.4循环结构程序应用举例——百鸡问题196
7.10小结198
第8章 数组199
8.1为什么要有数组200
8.1.1多变量的解决之道——数组的引入200
8.1.2数组就是这个样子——初识数组201
8.1.3数组的数组——维度的出现202
8.2一维数组204
8.2.1一维数组是这样定义的204
8.2.2一维数组的引用——其实很简单205
8.2.3一维数组的初始化——方法有许多206
8.2.4一维数组的应用举例——求数组各元素的平均值208
8.2.5一维数组的应用举例——数组元素的倒排209
8.2.6一维数组的应用举例——冒泡排序211
8.3二维数组214
8.3.1二维数组原来是这样定义的214
8.3.2二维数组的引用——其实并不难216
8.3.3二维数组的初始化——多样的初始化217
8.3.4二维数组应用举例——计算各科成绩的平均分220
8.3.5二维数组应用举例——矩阵的转置222
8.3.6二维数组应用举例——有趣的魔方阵223
8.4字符数组227
8.4.1字符数组是这样定义的227
8.4.2字符数组的初始化228
8.4.3字符数组的连续输出——格式符230
8.4.4字符数组的连续输入——格式符231
8.4.5常用的字符串处理函数232
8.4.6字符数组的应用举例236
8.5小结240
第9章 函数241
9.1为什么要有函数及函数的分类242
9.1.1为什么要有函数242
9.1.2函数有哪些——库函数和用户函数243
9.2函数的定义形式243
9.2.1不带参数的函数定义形式243
9.2.2带参数的函数定义形式——有参数列表244
9.2.3带参数的函数定义形式——形参定义的传统方式245
9.3局部变量与全局变量246
9.3.1局部变量246
9.3.2全局变量248
9.4函数的参数与函数的值250
9.4.1形式参数与实际参数250
9.4.2函数的返回值252
9.5函数的调用254
9.5.1函数调用的一般形式254
9.5.2函数调用的方式256
9.5.3对被调用函数的声明257
9.6函数的嵌套调用260
9.6.1函数的嵌套调用过程260
9.6.2函数的嵌套应用举例261
9.7函数的递归调用262
9.7.1什么是递归——自己调用自己262
9.7.2递归函数应用举例——求n!263
9.7.3递归函数调用应用举例——Fibonacci数列265
9.8数组作为函数的参数266
9.8.1数组元素作为函数的参数——只能传递一个数组元素266
9.8.2数组名作为函数的参数——可以传递整个数组268
9.8.3数组名作为参数传递——实际上传递的是数组的首地址271
9.8.4多维数组名作为函数的参数——传递整个数组275
9.9变量的存储277
9.9.1什么是动态存储与静态存储——生存期不同278
9.9.2 auto变量——自动类型变量278
9.9.3 static变量——静态变量278
9.9.4 register变量——使运行速度更快的变量281
9.9.5 extem变量——声明外部变量282
9.10内部函数与外部函数284
9.10.1内部函数——使用static284
9.10.2外部函数——使用extern285
9.11函数应用举例286
9.11.1函数应用举例——递归求解n个数的最大值286
9.11.2函数应用举例——递归求解a与b的最大公约数288
9.11.3函数应用举例——字符数组元素逆序存放289
9.12小结290
第10章 预处理命令291
10.1宏定义292
10.1.1为什么要有宏定义292
10.1.2不带参数的宏定义292
10.1.3宏定义与常量定义的区别294
10.1.4带参数的宏定义294
10.1.5宏定义中的参数与函数的参数的区别295
10.2文件包含命令297
10.2.1为什么要有文件包含命令297
10.2.2文件包含命令——include297
10.3条件编译299
10.3.1第一种条件编译命令——#ifdef300
10.3.2第二种条件编译命令——#ifdef…#elif…#endif301
10.3.3第三种条件编译命令——#ifndef302
10.3.4第四种条件编译命令——#if303
10.4小结304
第11章 指针305
11.1指针的相关概念306
11.1.1为什么要有指针和指针变量306
11.1.2什么是地址306
11.1.3什么是指针变量——存放地址的变量307
11.2指针变量308
11.2.1定义指针变量308
11.2.2使用指针变量310
11.2.3指针变量作为函数参数313
11.3数组与指针317
11.3.1指向数组元素的指针317
11.3.2通过指针引用数组元素318
11.3.3指针变量的自增运算和自减运算322
11.3.4数组指针作为函数的参数323
11.3.5指向多维数组的指针变量329
11.4字符串与指针336
11.4.1指向字符串的指针变量336
11.4.2字符串指针作为函数的参数342
11.4.3字符数组与字符指针变量的比较346
11.5指针数组与指向指针的指针347
11.5.1指针数组347
11.5.2指向指针的指针351
11.5.3指针数组作为main函数的参数353
11.6函数与指针354
11.6.1函数指针调用函数354
11.6.2指向函数的指针作为函数参数355
11.7返回指针值的函数358
11.7.1为什么函数要返回指针值——可以返回多个值358
11.7.2返回指针类型的函数358
11.8小结360
第12章 结构体和共用体361
12.1结构体362
12.1.1为什么要有结构体362
12.1.2结构体类型的定义363
12.1.3定义结构体变量363
12.1.4引用结构体变量365
12.1.5结构体变量的初始化367
12.2结构体数组369
12.2.1为什么要有结构体数组369
12.2.2定义结构体数组369
12.2.3结构体数组的初始化370
12.2.4结构体数组应用举例371
12.3指针与结构体375
12.3.1指向结构体变量的指针375
12.3.2指向结构体数组的指针376
12.3.3结构体变量和指向结构体的指针作为函数的参数378
12.4 typedef类型定义382
12.4.1 typedef——为数据类型重新起个名字382
12.4.2使用typedef时应注意的问题384
12.4.3 typedef的应用举例384
12.5共用体387
12.5.1为什么要有共用体——节省内存,多选一387
12.5.2定义共用体388
12.5.3引用共用体变量389
12.5.4使用共用体应该注意的问题390
12.5.5共用体应用举例390
12.6枚举类型393
12.6.1为什么要有枚举类型——变量的值只有有限的几种393
12.6.2定义枚举类型及变量394
12.6.3使用枚举类型时应注意的问题394
12.6.4枚举类型应用举例395
12.7小结396
第13章 位运算397
13.1为什么要有位运算与位运算符398
13.1.1为什么要有位运算——提高效率398
13.1.2位运算符398
13.1.3位运算符的优先级与结合性399
13.2位运算符和位运算399
13.2.1按位与运算符和按位与运算399
13.2.2按位或运算符与按位或运算401
13.2.3按位异或运算符与按位异或运算401
13.2.4按位取反运算符与按位取反运算403
13.2.5左移运算符与左移运算404
13.2.6右移运算符与右移运算405
13.2.7与位运算符相结合的赋值运算符405
13.3位运算应用举例406
13.3.1以二进制形式输出一个数——按位与运算并输出1或0406
13.3.2取一个整数的中间几位407
13.4位段409
13.4.1定义位段409
13.4.2引用位段成员410
13.4.3使用位段需要说明的问题411
13.5小结412
第14章 文件413
14.1文件的相关概念414
14.1.1为什么要有文件414
14.1.2文件的分类——二进制文件和文本文件414
14.1.3缓冲文件系统414
14.2打开与关闭文件415
14.2.1文件类型指针——FILE415
14.2.2打开文件——使用fopen函数416
14.2.3关闭文件——使用fclose函数417
14.3读取文件与写入文件418
14.3.1使用fputc函数写文件和使用fgetc函数读取文件418
14.3.2使用fputs函数写文件和使用fgets函数读取文件422
14.3.3使用fwrite函数写文件和使用fread函数读取文件424
14.3.4使用fprintf函数写文件和使用fscanf函数读取文件426
14.4文件的定位428
14.4.1 rewind函数——移动位置指针到文件的开始位置428
14.4.2 fseek函数——移动位置指针到任意位置429
14.4.3 ftell函数——得到位置指针的当前位置431
14.5文件状态检测432
14.5.1 feof函数——检测位置指针是否到了文件末尾432
14.5.2 ferror函数——检测是否操作文件错误432
14.5.3 clearerr函数——清除错误标志433
14.6文件的输入与输出操作函数总结433
14.7小结434
第15章 链表435
15.1链表的相关概念436
15.1.1为什么要有链表——节省内存单元,不用事先定义空间大小436
15.1.2什么是链表436
15.1.3简单链表——静态链表438
15.1.4动态存储分配442
15.2链表的操作443
15.2.1创建链表443
15.2.2链表的输出操作447
15.2.3链表的插入操作449
15.2.4链表的删除操作453
15.2.5链表的综合操作456
15.3链表操作应用举例457
15.3.1链表操作应用举例——逆置链表457
15.3.2链表操作应用举例——约瑟夫问题463
15.4小结467
第16章 键盘和鼠标469
16.1键盘操作470
16.1.1键盘编码470
16.1.2键盘操作函数470
16.2鼠标操作472
16.2.1鼠标的工作原理473
16.2.2鼠标综合应用举例477
16.3小结484
第17章 网络编程基础485
17.1网络基础知识486
17.1.1什么是计算机网络486
17.1.2网络协议486
17.1.3协议分层487
17.1.4网络参考模型488
17.1.5端口491
17.2 WinSocket基础491
17.2.1套接字Socket491
17.2.2基于TCP的Socket编程491
17.2.3基于UDP的Socket编程493
17.3 WinSocket相关函数493
17.3.1 WSAStartup函数——启动套接字库494
17.3.2 Socket函数——建立套接字494
17.3.3 bind函数——绑定本地IP地址和端口495
17.3.4 listen函数——侦听客户端请求496
17.3.5 accept函数——等待客户端的请求496
17.3.6 send函数——发送数据496
17.3.7 recv函数——接收数据497
17.3.8 connect函数——建立连接497
17.3.9 recvfrom函数——接收数据497
17.3.10 sendto函数——发送数据497
17.4基于TCP的简单网络程序498
17.4.1服务器端的程序实现498
17.4.2客户端程序的实现501
17.5基于UDP的简单网络聊天程序503
17.5.1服务器端程序的实现503
17.5.2客户端程序的实现505
17.6小结506
第18章 常用算法507
18.1算法基础508
18.1.1什么是算法及算法的描述语言508
18.1.2算法的特性509
18.1.3算法设计的目标509
18.1.4算法的时间复杂度和空间复杂度510
18.2迭代算法511
18.2.1算法思想511
18.2.2求一个数的平方根511
18.2.3角谷猜想512
18.2.4牛顿迭代法513
18.3递推算法515
18.3.1认识递推515
18.3.2斐波那契数列516
18.3.3分西瓜517
18.3.4该存多少钱518
18.4穷举算法518
18.4.1算法思想519
18.4.2完全数519
18.4.3背包问题520
18.5递归算法521
18.5.1算法思想522
18.5.2数制转换522
18.5.3组合问题523
18.6分治算法525
18.6.1算法思想525
18.6.2求n个数的最大值和最小值525
18.6.3赛程安排问题527
18.7贪心算法530
18.7.1算法思想530
18.7.2加油站问题531
18.7.3找零钱问题532
18.8矩阵算法534
18.8.1打印魔方阵534
18.8.2打印拉丁方阵536
18.8.3将矩阵旋转90度537
18.9小结539
第19章 简单数据结构——栈和队列541
19.1队列542
19.1.1队列的定义542
19.1.2队列的表示与实现543
19.1.3顺序循环队列544
19.1.4顺序循环队列的实现545
19.1.5链式队列的表示与实现547
19.1.6队列的应用——商品货架模拟549
19.2栈553
19.2.1栈的定义553
19.2.2顺序栈的存储结构与实现553
19.2.3链式栈的存储结构与实现555
19.2.4栈的应用举例——算术表达式求值557
19.3小结563
第20章 常用技术——排序565
20.1排序的基础知识566
20.1.1排序的相关概念566
20.1.2排序算法的分类567
20.2插入类排序567
20.2.1直接插入排序568
20.2.2折半插入排序569
20.2.3希尔排序571
20.3选择类排序573
20.3.1简单选择排序573
20.3.2堆排序575
20.4交换类排序582
20.4.1冒泡排序582
20.4.2快速排序584
20.5归并类排序587
20.5.1二路归并排序算法思想587
20.5.2二路归并排序算法实现588
20.6分配类排序591
20.6.1基数排序算法思想591
20.6.2基数排序算法实现592
20.7各种排序方法的比较598
20.8小结599
第21章 学生成绩管理系统601
21.1系统总体设计602
21.1.1项目开发目标602
21.1.2系统功能描述602
21.2系统详细设计603
21.2.1主函数的运行流程603
21.2.2功能模块设计604
21.2.3数据结构设计606
21.2.4函数功能描述606
21.3系统实现与系统测试608
21.3.1编码608
21.3.2系统测试621
21.4小结625
第22章C语言常见错误与程序调试技术627
22.1常见错误628
22.1.1错误分类628
22.1.2常见错误举例628
22.2程序调试632
22.2.1 Visual C+++ 6.0开发环境的程序调试632
22.2.2程序调试应用举例638
22.3小结643
后记645
参考文献651