书籍详情
跟龙哥学C语言编程
作者:李志龙 著
出版社:电子工业出版社
出版时间:2020-06-01
ISBN:9787121391637
定价:¥69.00
购买这本书可以去
内容简介
越来越多的高校在录取研究生时开始采用上机考试的形式来考查学生的动手编程能力,很多知名互联网公司在校招时也采用在线笔试的形式,然而,在以应试为主的大学教学模式下,动手能力往往是学生的薄弱环节。为此,本书以C语言为工具,由浅入深、由易到难地讲解了C语言,深入解析了程序执行的原理及数据结构和算法,为读者后续学习Linux系统编程和C++语言编程打下坚实的基础;同时,书中精选了各大知名互联网公司的校招面试题和社招面试题,以及部分知名高校考研的机试真题,可为读者提供可靠、实际的练习指导。全书强调程序的编写与调试,内容精练,可操作性强。每章均提供教学视频、实例代码和课后习题代码,读者可按书中的建议下载并练习。本书不仅可以作为读者提升C语言编程能力的图书,而且可以作为研究生初试的复习用书,还可作为C语言初学者的参考用书。
作者简介
李志龙,中南大学自动化专业学士,毕业后曾供职于金蝶、华为、OPPO等企业。2015年加入王道训练营,从事C/Linux/C++/Java EE/Python程序设计的教学工作。由于教学出色,加之培训视频圆了许多学子成功就业或读研的梦想,逐步被大家称为“龙哥”。
目录
目 录
第1章 开发环境搭建及调试窗口设置\t1
1.1 开发环境搭建\t1
1.1.1 C语言的那些事\t1
1.1.2 开发环境安装\t3
1.2 新建项目\t7
1.3 新建代码及编译运行\t9
1.4 程序的编译过程\t13
1.5 断点及调试窗口设置\t14
1.6 学习C语言后的境界\t16
练习题\t17
第2章 数据类型、运算符与表达式\t18
2.1 数据类型\t18
2.2 常量\t19
2.3 变量\t19
2.4 整型数据\t19
2.4.1 符号常量\t19
2.4.2 整型常量的不同进制表示\t22
2.4.3 补码的作用\t25
2.4.4 整型变量\t27
2.5 浮点型数据\t28
2.5.1 浮点型常量\t28
2.5.2 浮点型变量\t28
2.6 字符型数据\t30
2.6.1 字符型常量\t30
2.6.2 字符数据在内存中的存储形式及其使用方法\t31
2.7 字符串型常量\t32
2.8 混合运算\t32
2.8.1 数值按int型运算\t32
2.8.2 浮点型常量默认按double型运算\t34
2.8.3 类型强制转换场景\t35
2.9 常用的数据输入/输出函数\t36
2.9.1 scanf函数的原理\t36
2.9.2 scanf函数的循环读取\t38
2.9.3 多种数据类型混合输入\t39
2.9.4 getchar函数介绍\t40
2.9.5 putchar函数介绍\t41
2.9.6 printf函数介绍\t42
2.10 运算符与表达式\t43
2.10.1 运算符分类\t43
2.10.2 算术运算符及算术表达式\t44
2.10.3 关系运算符与关系表达式\t45
2.10.4 逻辑运算符与逻辑表达式\t47
2.10.5 位运算符\t48
2.10.6 赋值运算符\t49
2.10.7 条件运算符与逗号运算符\t51
2.10.8 自增、自减运算符及求字节运算符\t51
练习题\t52
答案解析\t52
第3章 选择与循环\t60
3.1 选择结构程序设计\t60
3.1.1 关系表达式与逻辑表达式\t60
3.1.2 if语句\t60
3.1.3 switch语句\t62
3.2 循环结构程序设计\t64
3.2.1 goto语句\t64
3.2.2 while循环\t65
3.2.3 do while循环\t66
3.2.4 for循环\t67
3.2.5 continue语句\t68
3.2.6 break语句\t69
练习题\t69
答案解析\t70
第4章 数组\t83
4.1 一维数组\t83
4.1.1 数组的定义\t83
4.1.2 一维数组在内存中的存储\t84
4.1.3 栈空间和数组\t87
4.2 二维数组\t88
4.2.1 二维数组的定义与引用\t88
4.2.2 二维数组的初始化及传递\t89
4.3 字符数组\t91
4.3.1 字符数组的定义及初始化\t91
4.3.2 gets函数与puts函数\t93
4.3.3 str系列字符串操作函数\t93
4.3.4 strn系列字符串操作函数\t95
4.3.5 mem系列操作函数\t96
练习题\t97
答案解析\t98
第5章 指针\t106
5.1 指针的本质\t106
5.1.1 指针的定义\t106
5.1.2 取地址操作符与取值操作符\t107
5.2 指针的使用场景\t108
5.2.1 指针的传递\t108
5.2.2 指针的偏移\t110
5.2.3 指针与自增、自减运算符\t112
5.2.4 指针与一维数组\t113
5.2.5 指针与动态内存申请\t113
5.2.6 字符指针与字符数组的初始化\t117
5.2.7 深入理解const\t118
5.2.8 memcpy函数与memmove函数的差异\t119
5.3 数组指针与二维数组\t120
5.3.1 数组指针的应用\t120
5.3.2 二维数组的偏移计算\t122
5.4 二级指针\t122
5.4.1 二级指针的传递\t122
5.4.2 二级指针的偏移\t123
5.5 函数指针\t125
练习题\t126
答案解析\t126
第6章 函数\t133
6.1 函数的声明、定义与调用\t133
6.1.1 函数的声明与定义\t133
6.1.2 函数的分类与调用\t135
6.2 嵌套调用\t137
6.3 递归调用\t138
6.4 变量及函数的作用域\t140
6.4.1 局部变量与全局变量\t140
6.4.2 动态存储方式与静态存储方式\t142
6.5 函数调用原理详解\t144
6.5.1 关于栈\t144
6.5.2 代码实例分析\t145
练习题\t146
答案解析\t147
第7章 结构体\t149
7.1 结构体与结构体指针\t149
7.1.1 结构体的定义、引用、初始化\t149
7.1.2 结构体指针\t151
7.1.3 typedef的使用\t152
7.2 链表的增删查改\t152
7.2.1 链表\t152
7.2.2 增删查改链表\t153
7.3 共用体与枚举\t158
7.3.1 共用体\t158
7.3.2 枚举\t159
练习题\t159
答案解析\t160
第8章 常用数据结构与算法\t182
8.1 数据结构\t182
8.1.1 栈\t182
8.1.2 队列\t184
8.1.3 二叉树\t187
8.1.4 红黑树\t192
8.1.5 数据结构学习技巧\t209
8.2 算法\t209
8.2.1 时间复杂度与空间复杂度\t209
8.2.2 排序算法\t210
8.2.3 二分查找算法\t235
8.2.4 哈希查找算法\t236
8.2.5 其他算法\t239
练习题\t239
答案解析\t239
第9章 文件操作\t243
9.1 C文件概述\t243
9.2 文件的打开、读写、关闭\t244
9.2.1 文件指针介绍\t244
9.2.2 文件的打开与关闭\t244
9.2.3 fread函数与fwrite函数\t247
9.2.4 fgets函数与fputs函数\t249
9.2.5 ftell函数\t251
9.2.6 fprintf函数与fscanf函数\t252
练习题\t253
答案解析\t253
第10章 C语言预处理和C语言库\t260
10.1 预处理简介\t260
10.2 预处理的工作原理\t260
10.3 预处理指令\t262
10.4 宏定义\t263
10.4.1 简单的宏\t263
10.4.2 带参数的宏\t265
10.4.3 操作符#\t267
10.4.4 操作符##\t267
10.4.5 宏的通用属性\t268
10.4.6 较长的宏中的逗号操作符\t269
10.4.7 宏定义中的do while循环\t270
10.4.8 预定义宏\t270
10.4.9 空宏参数\t271
10.4.10 const与#define的差异\t272
10.5 条件编译\t273
10.5.1 #if指令和#endif指令\t273
10.5.2 defined操作符\t273
10.5.3 #ifdef指令和#ifndef指令\t274
10.5.4 #elif指令和#else指令\t275
10.5.5 条件编译\t276
10.6 其他指令\t277
10.6.1 指令#line\t277
10.6.2 指令#undef\t278
10.6.3 变参宏...和__VA_ARGS__\t278
10.7 内联函数(C99)\t279
10.8 C库中的可变参数stdarg.h\t280
练习题\t282
答案解析\t283
第11章 学生信息管理系统\t285
11.1 系统功能描述\t285
11.2 系统模块设计\t286
11.3 系统用到的相关函数\t288
第12章 编译器词法、语法分析项目\t290
12.1 词法分析项目\t290
12.1.1 项目需求描述\t290
12.2 词法分析模块设计\t290
12.2.1 建立字典模块\t290
12.2.2 字符串存储及其TOKEN值的快速识别设计\t293
12.3 词法及语法分析简单样例研究\t296
12.3.1 算术表达式的合法性判断\t296
12.3.2 词法分析\t296
12.3.3 算术表达式的语法分析\t299
12.4 升级版功能:编译器语法分析\t303
12.4.1 整体流程分析\t304
12.4.2 函数体内流程分析\t305
12.4.3 表达式解析流程分析\t306
12.4.4 总结\t307
附录A ASCII码表\t308
附录B C语言运算符优先级\t311
参考文献\t313
第1章 开发环境搭建及调试窗口设置\t1
1.1 开发环境搭建\t1
1.1.1 C语言的那些事\t1
1.1.2 开发环境安装\t3
1.2 新建项目\t7
1.3 新建代码及编译运行\t9
1.4 程序的编译过程\t13
1.5 断点及调试窗口设置\t14
1.6 学习C语言后的境界\t16
练习题\t17
第2章 数据类型、运算符与表达式\t18
2.1 数据类型\t18
2.2 常量\t19
2.3 变量\t19
2.4 整型数据\t19
2.4.1 符号常量\t19
2.4.2 整型常量的不同进制表示\t22
2.4.3 补码的作用\t25
2.4.4 整型变量\t27
2.5 浮点型数据\t28
2.5.1 浮点型常量\t28
2.5.2 浮点型变量\t28
2.6 字符型数据\t30
2.6.1 字符型常量\t30
2.6.2 字符数据在内存中的存储形式及其使用方法\t31
2.7 字符串型常量\t32
2.8 混合运算\t32
2.8.1 数值按int型运算\t32
2.8.2 浮点型常量默认按double型运算\t34
2.8.3 类型强制转换场景\t35
2.9 常用的数据输入/输出函数\t36
2.9.1 scanf函数的原理\t36
2.9.2 scanf函数的循环读取\t38
2.9.3 多种数据类型混合输入\t39
2.9.4 getchar函数介绍\t40
2.9.5 putchar函数介绍\t41
2.9.6 printf函数介绍\t42
2.10 运算符与表达式\t43
2.10.1 运算符分类\t43
2.10.2 算术运算符及算术表达式\t44
2.10.3 关系运算符与关系表达式\t45
2.10.4 逻辑运算符与逻辑表达式\t47
2.10.5 位运算符\t48
2.10.6 赋值运算符\t49
2.10.7 条件运算符与逗号运算符\t51
2.10.8 自增、自减运算符及求字节运算符\t51
练习题\t52
答案解析\t52
第3章 选择与循环\t60
3.1 选择结构程序设计\t60
3.1.1 关系表达式与逻辑表达式\t60
3.1.2 if语句\t60
3.1.3 switch语句\t62
3.2 循环结构程序设计\t64
3.2.1 goto语句\t64
3.2.2 while循环\t65
3.2.3 do while循环\t66
3.2.4 for循环\t67
3.2.5 continue语句\t68
3.2.6 break语句\t69
练习题\t69
答案解析\t70
第4章 数组\t83
4.1 一维数组\t83
4.1.1 数组的定义\t83
4.1.2 一维数组在内存中的存储\t84
4.1.3 栈空间和数组\t87
4.2 二维数组\t88
4.2.1 二维数组的定义与引用\t88
4.2.2 二维数组的初始化及传递\t89
4.3 字符数组\t91
4.3.1 字符数组的定义及初始化\t91
4.3.2 gets函数与puts函数\t93
4.3.3 str系列字符串操作函数\t93
4.3.4 strn系列字符串操作函数\t95
4.3.5 mem系列操作函数\t96
练习题\t97
答案解析\t98
第5章 指针\t106
5.1 指针的本质\t106
5.1.1 指针的定义\t106
5.1.2 取地址操作符与取值操作符\t107
5.2 指针的使用场景\t108
5.2.1 指针的传递\t108
5.2.2 指针的偏移\t110
5.2.3 指针与自增、自减运算符\t112
5.2.4 指针与一维数组\t113
5.2.5 指针与动态内存申请\t113
5.2.6 字符指针与字符数组的初始化\t117
5.2.7 深入理解const\t118
5.2.8 memcpy函数与memmove函数的差异\t119
5.3 数组指针与二维数组\t120
5.3.1 数组指针的应用\t120
5.3.2 二维数组的偏移计算\t122
5.4 二级指针\t122
5.4.1 二级指针的传递\t122
5.4.2 二级指针的偏移\t123
5.5 函数指针\t125
练习题\t126
答案解析\t126
第6章 函数\t133
6.1 函数的声明、定义与调用\t133
6.1.1 函数的声明与定义\t133
6.1.2 函数的分类与调用\t135
6.2 嵌套调用\t137
6.3 递归调用\t138
6.4 变量及函数的作用域\t140
6.4.1 局部变量与全局变量\t140
6.4.2 动态存储方式与静态存储方式\t142
6.5 函数调用原理详解\t144
6.5.1 关于栈\t144
6.5.2 代码实例分析\t145
练习题\t146
答案解析\t147
第7章 结构体\t149
7.1 结构体与结构体指针\t149
7.1.1 结构体的定义、引用、初始化\t149
7.1.2 结构体指针\t151
7.1.3 typedef的使用\t152
7.2 链表的增删查改\t152
7.2.1 链表\t152
7.2.2 增删查改链表\t153
7.3 共用体与枚举\t158
7.3.1 共用体\t158
7.3.2 枚举\t159
练习题\t159
答案解析\t160
第8章 常用数据结构与算法\t182
8.1 数据结构\t182
8.1.1 栈\t182
8.1.2 队列\t184
8.1.3 二叉树\t187
8.1.4 红黑树\t192
8.1.5 数据结构学习技巧\t209
8.2 算法\t209
8.2.1 时间复杂度与空间复杂度\t209
8.2.2 排序算法\t210
8.2.3 二分查找算法\t235
8.2.4 哈希查找算法\t236
8.2.5 其他算法\t239
练习题\t239
答案解析\t239
第9章 文件操作\t243
9.1 C文件概述\t243
9.2 文件的打开、读写、关闭\t244
9.2.1 文件指针介绍\t244
9.2.2 文件的打开与关闭\t244
9.2.3 fread函数与fwrite函数\t247
9.2.4 fgets函数与fputs函数\t249
9.2.5 ftell函数\t251
9.2.6 fprintf函数与fscanf函数\t252
练习题\t253
答案解析\t253
第10章 C语言预处理和C语言库\t260
10.1 预处理简介\t260
10.2 预处理的工作原理\t260
10.3 预处理指令\t262
10.4 宏定义\t263
10.4.1 简单的宏\t263
10.4.2 带参数的宏\t265
10.4.3 操作符#\t267
10.4.4 操作符##\t267
10.4.5 宏的通用属性\t268
10.4.6 较长的宏中的逗号操作符\t269
10.4.7 宏定义中的do while循环\t270
10.4.8 预定义宏\t270
10.4.9 空宏参数\t271
10.4.10 const与#define的差异\t272
10.5 条件编译\t273
10.5.1 #if指令和#endif指令\t273
10.5.2 defined操作符\t273
10.5.3 #ifdef指令和#ifndef指令\t274
10.5.4 #elif指令和#else指令\t275
10.5.5 条件编译\t276
10.6 其他指令\t277
10.6.1 指令#line\t277
10.6.2 指令#undef\t278
10.6.3 变参宏...和__VA_ARGS__\t278
10.7 内联函数(C99)\t279
10.8 C库中的可变参数stdarg.h\t280
练习题\t282
答案解析\t283
第11章 学生信息管理系统\t285
11.1 系统功能描述\t285
11.2 系统模块设计\t286
11.3 系统用到的相关函数\t288
第12章 编译器词法、语法分析项目\t290
12.1 词法分析项目\t290
12.1.1 项目需求描述\t290
12.2 词法分析模块设计\t290
12.2.1 建立字典模块\t290
12.2.2 字符串存储及其TOKEN值的快速识别设计\t293
12.3 词法及语法分析简单样例研究\t296
12.3.1 算术表达式的合法性判断\t296
12.3.2 词法分析\t296
12.3.3 算术表达式的语法分析\t299
12.4 升级版功能:编译器语法分析\t303
12.4.1 整体流程分析\t304
12.4.2 函数体内流程分析\t305
12.4.3 表达式解析流程分析\t306
12.4.4 总结\t307
附录A ASCII码表\t308
附录B C语言运算符优先级\t311
参考文献\t313
猜您喜欢