封面
版权信息
前言
资源与支持
第1章 C语言之定位
1.1 计算机应用基础
1.1.1 中央处理器
1.1.2 位和字节
1.1.3 二进制
1.1.4 编码格式
1.2 C语言的诞生
1.3 第一印象的建立
1.4 理解编译系统——学习的第一步
1.5 技术解惑
1.5.1 学习C语言还有用吗
1.5.2 怎样学好C语言
1.5.3 学好C语言的建议
1.6 课后练习
第2章 C语言开发工具详解
2.1 用DOS开发C程序
2.1.1 安装Turbo C 3.0
2.1.2 使用Turbo C 3.0
2.2 在Windows环境下使用VisualStudio2017
2.2.1 安装Visual Studio 2017
2.2.2 使用Visual Studio 2017开发一个C程序
2.3 使用轻量级开发工具DEVC++
2.3.1 安装DEV C++
2.3.2 使用DEV C++运行一个C程序
2.4 使用VsiualC++6.0开发C程序
2.5 使用手机开发C程序
2.6 技术解惑
2.6.1 安装Visual Studio 2017时遇到的常见问题
2.6.2 在Windows 7中安装Visual Studio时遇到的常见问题
2.7 课后练习
第3章 程序员基本素质的培养
3.1 养成好的命名习惯
3.2 C程序文件结构
3.2.1 C程序的组成部分
3.2.2 C程序的格式总结
3.3 养成好的C语言编程风格
3.3.1 随时使用缩进格式
3.3.2 注意大括号的位置
3.3.3 函数的规则
3.3.4 注意注释
3.4 如何成为一名优秀的程序员
3.5 技术解惑
3.6 课后练习
第4章 C语言语法
4.1 标识符和关键字
4.2 最基本的数据类型
4.3 常量和变量
4.3.1 常量
4.3.2 变量
4.4 整型数据
4.4.1 整型常量
4.4.2 整型变量
4.5 实型数据
4.5.1 实型常量
4.5.2 实型变量
4.5.3 实型常量的类型
4.6 字符型数据
4.6.1 字符常量
4.6.2 字符串常量
4.6.3 字符变量
4.7 初始化变量
4.8 整型、实型和字符型数据间的运算总结
4.8.1 自动转换
4.8.2 强制转换
4.9 技术解惑
4.9.1 在C语言中无符号整型变量和有符号整型变量的定义
4.9.2 在C语言中字符变量的含义
4.9.3 如何理解字符型数据的取值范围
4.9.4 怎样将带小数点的字符型数据转换成浮点型
4.10 课后练习
第5章 运算符和表达式
5.1 运算符和表达式的概述
5.1.1 运算符的种类
5.1.2 运算符的优先级
5.2 算术运算符和算术表达式
5.2.1 单目运算符
5.2.2 双目运算符
5.3 赋值运算符和赋值表达式
5.3.1 基本赋值运算符
5.3.2 复合赋值运算符
5.3.3 赋值表达式
5.4 关系运算符和关系表达式
5.4.1 关系运算符
5.4.2 关系表达式
5.5 逻辑运算符和逻辑表达式
5.5.1 逻辑运算符
5.5.2 逻辑表达式
5.6 逗号运算符和逗号表达式
5.6.1 逗号运算符
5.6.2 逗号表达式
5.7 求字节数的运算符
5.8 技术解惑
5.8.1 C语言运算符优先级的详情
5.8.2 少数运算符在规定表达式中的求值顺序
5.8.3 在C语言中是否可以进行混合运算
5.8.4 在一个逻辑条件语句中常数项永远在左侧
5.8.5 赋值处理的自动类型转换
5.9 课后练习
第6章 输入和输出
6.1 C语句的初步知识
6.1.1 C语句简介
6.1.2 赋值语句
6.2 打通任督二脉——数据输入和输出
6.2.1 putchar函数
6.2.2 getchar函数
6.2.3 printf函数
6.2.4 scanf函数
6.2.5 puts函数
6.2.6 C11标准函数gets_s
6.3 技术解惑
6.3.1 gets_s函数和scanf函数的区别
6.3.2 克服gets_s函数的缺陷
6.3.3 C语言的输入和输出问题
6.4 课后练习
第7章 流程控制
7.1 最常见的顺序结构
7.2 选择结构
7.2.1 单分支结构语句
7.2.2 双分支结构语句
7.2.3 多分支结构语句
7.2.4 条件运算符和条件表达式
7.3 循环结构
7.3.1 for语句
7.3.2 while语句
7.3.3 do…while语句
7.3.4 正确对待goto语句
7.3.5 break/continue跳跃
7.3.6 死循环/退出程序
7.4 技术解惑
7.4.1 循环中的低效问题
7.4.2 分析C语言循环语句的效率
7.4.3 使用for循环语句的注意事项
7.5 课后练习
第8章 数组和字符串——数据的存在形式
8.1 一维数组
8.1.1 定义一维数组
8.1.2 引用一维数组的元素
8.1.3 初始化一维数组
8.2 多维数组
8.2.1 二维数组的用法
8.2.2 多维数组的用法
8.3 字符数组与字符串
8.3.1 字符数组
8.3.2 字符串与字符数组
8.3.3 字符数组的输入和输出
8.4 字符串处理函数
8.4.1 测试字符串长度的函数
8.4.2 字符串大小写转换函数
8.4.3 字符串复制函数
8.4.4 字符串比较函数
8.4.5 字符串连接函数
8.4.6 其他的字符串函数
8.4.7 将字符串转换成数值的函数
8.5 字符处理函数
8.5.1 字符检测函数
8.5.2 字符大小写转换函数
8.6 技术解惑
8.6.1 数组的下标总是从0开始吗
8.6.2 C语言对数组的处理非常有效吗
8.6.3 初始化一维数组的注意事项
8.6.4 冒泡排序
8.7 课后练习
第9章 函数
9.1 C函数的基础知识
9.1.1 函数的分类
9.1.2 函数的定义
9.2 函数声明和函数原型
9.3 函数的参数
9.3.1 形参和实参
9.3.2 以数组名作为函数的参数
9.3.3 以数组作为函数的参数
9.4 函数的返回值
9.5 函数的调用
9.5.1 函数调用的格式
9.5.2 函数的调用方式
9.5.3 被调函数的声明方式
9.5.4 对调用函数的方式进行深入分析
9.6 函数的嵌套调用和递归调用
9.6.1 函数的嵌套调用
9.6.2 函数的递归调用
9.7 变量的作用域和生存期
9.7.1 变量作用域
9.7.2 静态存储变量和动态存储变量
9.8 C的内部函数和外部函数
9.8.1 内部函数
9.8.2 外部函数
9.9 库函数
9.10 技术解惑
9.10.1 通过Turbo C深入分析项目文件
9.10.2 要尽量避免不必要的函数调用
9.10.3 请确保函数的声明和定义是静态的
9.10.4 避免过长的main()函数
9.10.5 函数的地址也是数据
9.10.6 说明函数的时机
9.10.7 一个函数可以有多少个参数
9.10.8 如果一个函数没有返回值,是否需要加入return语句
9.10.9 在程序退出main函数之后还有可能执行一部分代码
9.10.10 exit()函数和return语句的差异
9.11 课后练习
第10章 指针
10.1 基本概念
10.2 变量的指针和指向变量的指针变量
10.2.1 声明指针变量
10.2.2 指针变量的初始化
10.2.3 指针变量的引用
10.2.4 关于指针运算符的说明
10.2.5 指针变量的运算
10.2.6 以指针变量作为函数参数
10.2.7 void类型的指针
10.3 指针和数组
10.3.1 数组元素的指针
10.3.2 指向一维数组元素的指针变量
10.3.3 通过指针引用数组元素
10.3.4 以数组名作为函数参数
10.4 指针和多维数组
10.4.1 多维数组的地址
10.4.2 指向多维数组的指针变量
10.5 指针和字符串
10.5.1 指针访问字符串
10.5.2 以字符串指针作为函数参数
10.5.3 字符串指针变量与字符数组的区别
10.6 指针数组和多级指针
10.6.1 指针数组
10.6.2 多级指针的定义和应用
10.6.3 指向指针的指针
10.6.4 main函数的参数
10.7 指针函数和函数指针
10.7.1 指针函数
10.7.2 函数指针
10.8 技术解惑
10.8.1 初始化指针时的注意事项
10.8.2 为指针赋值时的注意事项
10.8.3 当指针用于数组时的注意事项
10.8.4 在结构中使用指针时的注意事项
10.8.5 避免不必要的内存引用
10.8.6 避免悬空指针和野指针
10.8.7 数组下标与指针的效率解析
10.8.8 使用指针时的常见错误
10.9 课后练习
第11章 数据的熔炉——结构体、共用体和枚举
11.1 结构体
11.1.1 定义结构体类型
11.1.2 定义结构体类型变量
11.1.3 引用结构体变量
11.1.4 初始化结构体变量
11.2 结构体数组
11.2.1 定义结构体数组
11.2.2 初始化结构体数组
11.2.3 引用结构体数组
11.3 结构体指针
11.3.1 定义结构体指针变量
11.3.2 初始化结构体指针变量
11.3.3 引用结构体指针变量
11.3.4 指向结构变量的指针
11.3.5 指向结构体数组的指针
11.4 在函数中使用结构体
11.4.1 结构体变量和结构体指针可以作为函数参数
11.4.2 函数可以返回结构体类型的值
11.5 共用体(联合)
11.5.1 定义共用体和共用体变量
11.5.2 引用和初始化共用体变量
11.6 枚举
11.6.1 定义枚举类型
11.6.2 定义枚举变量
11.6.3 引用枚举变量
11.7 typedef定义类型的作用
11.7.1 类型定义符typedef的基础
11.7.2 使用typedef
11.8 技术解惑
11.8.1 可以省略结构名吗
11.8.2 是否可以定义一种通用数据类型以存储任意类型的数据
11.8.3 结构和共用体的区别
11.8.4 定义C结构体的问题
11.9 课后练习
第12章 链表
12.1 动态内存分配
12.1.1 动态内存分配的作用
12.1.2 实现动态内存分配及管理的方法
12.2 链表详解
12.2.1 链表简介
12.2.2 单向链表
12.2.3 创建一个链表
12.2.4 删除整个链表
12.2.5 在链表中插入节点
12.2.6 在链表中删除节点
12.2.7 双向链表
12.2.8 循环链表
12.3 技术解惑
12.3.1 链表的总结
12.3.2 面试题——判断单链表是否有环
12.3.3 面试题——实现单链表逆置
12.4 课后练习
第13章 位运算
13.1 位运算符和位运算
13.1.1 按位与运算
13.1.2 按位或运算
13.1.3 按位异或运算
13.1.4 取反运算
13.1.5 左移运算
13.1.6 右移运算
13.1.7 位运算的应用实例
13.2 位域
13.2.1 位域的定义和位域变量的说明
13.3 技术解惑
13.3.1 二进制补码的运算公式
13.3.2 面试题——从某个数中取出指定的某些位
13.3.3 位域的内存对齐原则
13.4 课后练习
第14章 预编译处理
14.1 预编译的基础
14.2 宏定义
14.2.1 不带参数的宏定义
14.2.2 带参数的宏定义
14.2.3 字符串化运算符
14.2.4 并接运算符
14.3 文件包含
14.4 条件编译
14.4.1 #ifdef… #else…#endif命令
14.4.2 #if defined… #else…#endif
14.4.3 #ifndef… #else…#endif
14.4.4 #if !defined… #else…#endif
14.4.5 #ifdef…#elif… #elif…#else… #endif
14.5 技术解惑
14.5.1 还有其他预编译指令吗
14.5.2 带参的宏定义和函数不同
14.5.3 C语言中预处理指令的总结
14.5.4 预编译指令的本质
14.5.5 sizeof(int)在预编译阶段是不会求值的
14.5.6 多行预处理指令的写法
14.6 课后练习
第15章 文件操作
15.1 文件
15.1.1 文本文件
15.1.2 文件分类
15.2 文件指针
15.3 文件的打开与关闭
15.3.1 打开文件
15.3.2 关闭文件
15.4 文件读写
15.4.1 字符读写函数
15.4.2 字符串读写函数
15.4.3 格式化读写函数
15.4.4 数据块读写函数
15.4.5 其他读写函数
15.5 文件的随机读写
15.5.1 fseek函数
15.5.2 rewind函数
15.5.3 ftell函数
15.6 文件管理函数
15.6.1 删除文件
15.6.2 重命名文件
15.6.3 复制文件
15.7 文件状态检测函数
15.7.1 feof函数
15.7.2 ferror函数
15.7.3 clearerr函数
15.8 Win32API中的文件操作函数
15.8.1 创建和打开文件
15.8.2 读取、写入和删除文件
15.9 技术解惑
15.9.1 文件指针是文件内部的位置指针吗
15.9.2 fseek函数的换行问题
15.9.3 怎样解决gets函数的溢出问题
15.9.4 feof函数会多读一个数据吗
15.9.5 流和文件的关系
15.10 课后练习
第16章 错误和程序调试
16.1 常见错误分析
16.1.1 语法错误
16.1.2 逻辑错误(语义错误)
16.1.3 内存错误
16.2 错误的检出与分离
16.3 调试时的注意事项
16.3.1 上机前要先熟悉程序的运行环境
16.3.2 在编程时要为调试做好准备
16.4 技术解惑
16.4.1 编译通过并不代表运行正确
16.4.2 两段代码的编译差别
16.4.3 调试程序的方法与技巧
16.5 课后练习
第17章 内存管理
17.1 C语言中的内存模型
17.2 栈和堆
17.2.1 栈操作
17.2.2 堆操作
17.3 动态管理
17.3.1 使用函数malloc动态分配内存空间
17.3.2 使用函数calloc分配内存空间并初始化
17.3.3 使用函数realloc重新分配内存
17.3.4 使用函数free释放内存空间
17.4 课后练习
第18章 C语言高级编程技术
18.1 C语言的高级编程技术
18.2 分析文本的屏幕输出和键盘输入
18.2.1 实现文本的屏幕输出
18.2.2 实现键盘输入
18.2.3 应用实例
18.3 分析图形显示方式和鼠标输入
18.3.1 初始化图形模式
18.3.2 清屏和恢复显示函数
18.3.3 建立独立图形程序
18.3.4 基本绘图函数
18.3.5 线性函数
18.3.6 颜色控制函数
18.3.7 填色函数和画图函数
18.3.8 图形窗口函数
18.3.9 分析图形方式下的文本输出函数
18.4 菜单设计
18.5 课后练习
第19章 算法——抓住程序的灵魂
19.1 我们对算法的理解
19.1.1 算法是程序的灵魂
19.1.2 何谓算法
19.1.3 算法的特性
19.2 算法表示法——流程图
19.3 枚举算法
19.3.1 枚举算法的基础
19.3.2 实战演练—百钱买百鸡
19.3.3 实战演练—填写运算符
19.4 递推算法
19.4.1 递推算法的基础
19.4.2 实战演练—斐波那契数列
19.4.3 实战演练—银行存款
19.5 递归算法
19.5.1 递归算法的基础
19.5.2 实战演练—汉诺塔
19.5.3 实战演练—阶乘
19.6 分治算法
19.6.1 分治算法的基础
19.6.2 实战演练—大数相乘
19.6.3 实战演练—欧洲冠军杯比赛日程安排
19.7 贪心算法
19.7.1 贪心算法的基础
19.7.2 实战演练—装箱
19.7.3 实战演练—找零方案
19.8 试探法算法
19.8.1 试探法算法的基础
19.8.2 实战演练—八皇后
19.8.3 实战演练—体彩29选7的组合
19.9 迭代算法
19.9.1 迭代算法的基础
19.9.2 实战演练—求平方根
19.10 模拟算法
19.10.1 模拟算法的思路
19.10.2 实战演练—猜数字游戏
19.10.3 实战演练—掷骰子游戏
19.11 技术解惑
19.11.1 衡量算法的标准
19.11.2 选择使用枚举法的时机
19.11.3 递推和递归的差异
19.11.4 分治法解决问题的类型
19.11.5 分治算法的机理
19.11.6 贪婪算法并不是解决问题最优方案的原因
19.11.7 回溯算法是否会影响算法效率
19.11.8 递归算法与迭代算法的区别
19.12 课后练习
第20章 数据结构
20.1 使用线性表
20.1.1 线性表的特性
20.1.2 顺序表操作
20.1.3 实战演练——使用顺序表操作函数
20.2 队列
20.2.1 队列的定义
20.2.2 实战演练——实现一个排号程序
20.3 栈
20.3.1 栈的定义
20.3.2 实战演练——实现栈操作
20.4 技术解惑
20.4.1 线性表插入操作的时间复杂度
20.4.2 线性表删除操作的时间复杂度
20.4.3 线性表按值查找操作的时间复杂度
20.4.4 线性表链接存储操作的11种算法
20.4.5 堆和栈的区别
20.5 课后练习
第21章 网络编程技术
21.1 OSI7层网络模型
21.2 TCP/IP
21.2.1 IP
21.2.2 TCP
21.2.3 UDP
21.2.4 ICMP
21.3 使用C语言开发网络项目
21.3.1 网络编程方式
21.3.2 网络通信的基本流程
21.3.3 搭建开发环境
21.3.4 两个常用的数据结构
21.3.5 Windows套接字的基础
21.4 常用的Winsock函数
21.4.1 WSAStartup函数
21.4.2 socket函数
21.4.3 inet_addr函数
21.4.4 gethostbyname函数
21.4.5 bind函数
21.4.6 connect函数
21.4.7 select函数
21.4.8 recv函数
21.4.9 sendto函数
21.5 MAC地址
21.6 NetBIOS编程
21.6.1 处理过程
21.6.2 NetBIOS命令
21.6.3 NetBIOS名字解析
21.6.4 NetBEUI
21.6.5 NetBIOS的范围
21.6.6 NetBIOS控制块
21.7 实战演练——获取当前机器的MAC地址
21.7.1 选择开发工具
21.7.2 设计MFC窗体
21.7.3 具体编码
第22章 初入江湖——设计游戏项目
22.1 游戏功能描述
22.2 游戏总体设计
22.2.1 功能模块设计
22.2.2 数据结构设计
22.2.3 构成函数介绍
22.3 游戏的具体实现
22.3.1 预处理
22.3.2 主函数
22.3.3 初始化界面处理
22.3.4 时钟中断处理
22.3.5 成绩、速度和帮助处理
22.3.6 满行处理
22.3.7 方块显示和消除处理
22.3.8 方块判断处理
第23章 风云再起——设计网络项目
23.1 系统功能描述
23.2 系统总体设计
23.2.1 功能模块设计
23.2.2 数据结构设计
23.2.3 构成函数介绍
23.3 系统的具体实现
23.3.1 预处理
23.3.2 初始化处理
23.3.3 控制模块
23.3.4 数据报解读处理
23.3.5 Ping测试处理
23.3.6 主函数
第24章 炉火纯青——学生成绩管理系统
24.1 系统总体描述
24.1.1 项目开发的目标
24.1.2 项目的意义
24.1.3 系统功能描述
24.2 系统总体设计
24.2.1 功能模块设计
24.2.2 数据结构设计
24.2.3 构成函数介绍
24.3 系统的具体实现
24.3.1 预处理
24.3.2 主函数
24.3.3 系统主菜单函数
24.3.4 表格显示信息
24.3.5 信息查找定位
24.3.6 格式化输入数据
24.3.7 增加学生记录
24.3.8 查询学生记录
24.3.9 删除学生记录
24.3.10 修改学生记录
24.3.11 插入学生记录
24.3.12 统计学生记录
24.3.13 排序处理
24.3.14 存储学生信息
第25章 笑傲江湖——使用C51实现跑马灯程序
25.1 单片机C语言基础
25.1.1 单片机C语言的优越性
25.1.2 C51的数据类型
25.1.3 C51数据的存储结构
25.1.4 C51运算符和表达式
25.1.5 C51的中断函数
25.2 跑马灯设计实例
25.2.1 基本跑马灯的实现
25.2.2 矩形波发生器
25.2.3 用定时器/计数器产生矩形波
25.3 一个完整的跑马灯程序
25.3.1 电路设计
25.3.2 程序设计
更新时间:2020-04-14 15:14:38