C语言程序设计——原理与实践
定价:¥60.00
作者: 宋友,王君臣,肖文磊,李莹等
出版社:高等教育出版社
“十四五”普通高等教育本科国家级规划教材
- 高等教育出版社
- 9787040588422
- 1版
- 47261272-0
- 16开
- 570
- 工学
- 计算机类
- 工学、理学
- 本科 高职
内容简介
C 语言是编程入门的最佳计算机语言之一。C 语言编程入门容易,学好困难,既需要大量的编程实践,也需要对C 语言原理的深入分析。
本书根据程序设计初学者的认知规律组织章节和内容,编排结构新颖,内容系统性强,注重循序渐进地提高读者的编程能力。每一章都给出了大量而丰富的程序实例,实例注重实用性,每个实例都有问题分析和编程提示,在实例的分析中对关键的C 语言原理进行深入分析。每一章都自成体系,学完每一章,读者都能编写实用或有趣的程序,增加学习兴趣和信心,为新知识的学习奠定基础。
本书实践特色明显,但同时不失理论深度,适合作为本专科院校C 语言程序设计课程的教材,也适合作为广大编程爱好者的参考用书。
目录
目录
前辅文
第一部分 入门篇
第1章 编程快速入门
1.1 用C 语言编程的基本步骤
1.1.1 编辑、编译、运行
1.1.2 更完整的C 程序开发步骤
1.2 初识C 语言编程
1.2.1 程序的基本结构和语法
1.2.2 基本的算术运算与数据类型
1.2.3 选择语句if 与关系运算
1.2.4 循环语句while 简介
1.3 如何学编程
1.4 本章小结
练习题
第2章 编程基础框架
2.1 数据表示基础1 :常量
2.1.1 十进制整数
2.1.2 实数
2.1.3 字符与ASCII 码
2.1.4 转义字符
2.1.5 字符串
2.2 数据表示基础2 :变量
2.2.1 变量类型与变量定义
2.2.2 变量命令规则与方法
2.2.3 数据类型及数据表示范围
2.2.4 变量赋值与数据类型转换
2.3 格式化输入输出
2.3.1 标准输入函数scanf( )
2.3.2 多组数据输入
2.3.3 标准输出函数printf( )
2.3.4 输入输出的常见问题
2.4 赋值与算术运算
2.4.1 运算中的类型转换
2.4.2 运算的优先级
2.4.3 自增与自减运算
2.4.4 复合赋值运算符
2.5 运算中的类型转换
2.6 逻辑运算与if/else
2.7 运算符的优先级
2.8 数据表示基础3 :一维数组简介
2.9 宏定义与常量的符号表示
2.10 标准库函数简介
2.11 本章小结
练习题
第3章 数据处理基础
3.1 数值在计算机中的编码
3.1.1 十进制与二进制
3.1.2 数据的存储与理解
3.2 数的编码
3.2.1 原码
3.2.2 反码
3.2.3 补码
3.3 位运算
3.3.1 位运算符
3.3.2 位运算实例
3.4 其他进制
3.4.1 八进制与十六进制
3.4.2 更多进制
3.5 变量与数据存储
3.5.1 变量与内存地址
3.5.2 数的存储范围
3.6 浮点数的表达与存储简介
3.6.1 小数在数学意义上的二进制表示
3.6.2 用二进制表示小数的不足
3.6.3 浮点数的编码与存储
3.7 数组基础
3.7.1 数组与内存地址
3.7.2 数组访问与带参数的宏定义
3.7.3 数组应用实例
3.8 标准输入输出与文件重新定向
3.8.1 用函数实现输入输出重新定向
3.8.2 命令行模式下的输入输出重定向
3.9 本章小结
练习题
第二部分 基础篇
第4章 控制结构
4.1 结构化程序设计
4.1.1 从goto 到结构化编程
4.1.2 理解结构化程序设计
4.1.3 三类控制结构
4.1.4 利用计算机求解问题:算法
4.2 选择结构
4.2.1 基本选择结构
4.2.2 条件运算符
4.2.3 嵌套选择结构与程序效率分析
4.2.4 多路选择结构switch
4.3 循环结构
4.3.1 while 循环结构
4.3.2 for 循环结构
4.3.3 do...while 循环结构
4.3.4 选用合适的循环结构
4.3.5 循环结构的嵌套
4.3.6 循环结构的非常规控制:break 和continue
4.4 再论goto 语句
4.5 本章小结
练习题
第5章 函数基础
5.1 函数定义与调用
5.1.1 函数的声明与调用
5.1.2 自定义函数
5.2 函数的模块化编程方法
5.2.1 函数的形参与实参
5.2.2 函数参数的值传递
5.2.3 函数重在接口的原理
5.2.4 局部变量与全局变量
5.3 递归函数
5.3.1 递归的基本概念
5.3.2 递归函数与隐函数
5.3.3 递归重在调用的思想
5.4 标准库函数的应用简介
5.5 本章小结
练习题
第6章 数组
6.1 一维数组
6.1.1 一维数组的定义
6.1.2 一维数组初始化
6.1.3 数组越界访问
6.1.4 数组的复制
6.1.5 sizeof 应用于数组
6.1.6 一维数组作为函数参数
6.1.7 变长数组及其隐患
6.2 排序
6.2.1 冒泡排序
6.2.2 选择排序
6.2.3 插入排序
6.2.4 快速排序
6.2.5 排序算法的稳定性
6.3 查找
6.3.1 顺序查找
6.3.2 折半查找
6.4 基于数组的常用数据结构
6.4.1 栈
6.4.2 队列
6.4.3 循环队列
6.4.4 哈希表
6.5 字符串
6.5.1 字符型数组与字符串
6.5.2 字符串的定义与初始化
6.5.3 字符串常量与字符串变量
6.5.4 标准字符串处理函数
6.6 二维数组与多维数组
6.6.1 二维数组的定义与初始化
6.6.2 二维数组的访问与存储
6.6.3 二维数组作为函数参数
6.6.4 二维字符数组
6.6.5 多维数组的定义与存储
6.7 数组应用与实践
6.8 本章小结
练习题
第三部分 进阶篇
第7章 指针基础
7.1 指针、地址、变量、内存之间的关系
7.2 数据类型的回顾
7.3 指针变量
7.3.1 指针变量的定义
7.3.2 指针与变量的关系
7.3.3 指针的初始化与赋值
7.3.4 通过指针访问数据
7.3.5 常量指针和指针常量
7.3.6 char* 型指针与字符串
7.3.7 指针作为函数参数
7.3.8 数组名和指针作为函数参数的关系
7.3.9 指针作为函数返回值
7.4 指针运算
7.4.1 指针加减整数
7.4.2 指针与下标
7.4.3 指针相减
7.4.4 其他指针运算
7.4.5 指针的比较
7.4.6 指针的强制类型转换
7.5 void * 指针与memcpy 函数
7.6 malloc( ) 函数与堆空间
7.7 本章小结
练习题
第8章 指针进阶
8.1 指针与数组
8.2 数组类型与数组指针
8.2.1 数组类型
8.2.2 数组指针
8.3 多维数组与数组指针
8.3.1 二维数组的深入理解
8.3.2 二维数组作为函数参数的本质
8.3.3 高维数组的深入理解
8.3.4 多维数组下标与线性地址偏移
8.4 多重指针
8.5 指针数组
8.5.1 指针数组
8.5.2 指针数组与二维数组
8.6 命令行参数
8.7 函数指针
8.7.1 函数指针
8.7.2 函数指针的用法与意义
8.7.3 使用函数指针的库函数
8.8 本章小结
练习题
第9章 结构体与联合体
9.1 struct 结构体
9.1.1 结构体类型的定义
9.1.2 结构体变量的定义
9.1.3 结构体成员的对齐
9.1.4 结构体的初始化
9.1.5 结构体的访问
9.1.6 结构体类型的嵌套定义
9.1.7 无名结构体
9.1.8 结构体数组
9.2 union 联合体
9.2.1 联合体类型与变量的定义
9.2.2 联合体变量的用法
9.3 typedef 类型定义关键字
9.3.1 自定义类型基本概念
9.3.2 自定义复合数据类型
9.4 链表简介
9.4.1 链表创建
9.4.2 链表遍历
9.4.3 链表插入与删除
9.5 本章小结
练习题
第四部分 高级篇
第10章 文件与文件流
10.1 文件简介
10.1.1 理解文件流
10.1.2 文件的操作
10.1.3 文件的分类
10.1.4 正文文件与二进制文件的区别
10.2 文件流的打开、读写和关闭
10.2.1 打开文件
10.2.2 关闭文件
10.3 文件流的读写操作
10.3.1 正文格式读写
10.3.2 二进制格式读写
10.4 文件流操作的规则
10.4.1 Windows 系统的操作组合
10.4.2 Linux 系统的操作组合
10.4.3 跨平台文件操作
10.5 文件流的定位与flush
10.5.1 文件流的原理
10.5.2 文件流的定位
10.5.3 文件流的flush
10.6 本章小结
练习题
第11章 程序开发的基本过程
11.1 需求分析
11.1.1 程序目标的描述
11.1.2 数学模型的建立
11.1.3 空间换时间的优化策略
11.2 方案设计
11.2.1 核心问题的分解
11.2.2 解题思路的确定
11.2.3 数据结构的选择
11.2.4 算法的设计
11.3 编码实现
11.3.1 代码的结构
11.3.2 函数的原则
11.4 调试与测试简介
11.4.1 调试的基本步骤
11.4.2 调试的方法
11.4.3 测试的思想
11.5 本章小结
练习题
附录A gcc 编译器的安装
附录B Code::Blocks 集成开发环境的安装
附录C ASCII 码表
附录D 运算优先级表
附录E 常用库函数
参考文献
前辅文
第一部分 入门篇
第1章 编程快速入门
1.1 用C 语言编程的基本步骤
1.1.1 编辑、编译、运行
1.1.2 更完整的C 程序开发步骤
1.2 初识C 语言编程
1.2.1 程序的基本结构和语法
1.2.2 基本的算术运算与数据类型
1.2.3 选择语句if 与关系运算
1.2.4 循环语句while 简介
1.3 如何学编程
1.4 本章小结
练习题
第2章 编程基础框架
2.1 数据表示基础1 :常量
2.1.1 十进制整数
2.1.2 实数
2.1.3 字符与ASCII 码
2.1.4 转义字符
2.1.5 字符串
2.2 数据表示基础2 :变量
2.2.1 变量类型与变量定义
2.2.2 变量命令规则与方法
2.2.3 数据类型及数据表示范围
2.2.4 变量赋值与数据类型转换
2.3 格式化输入输出
2.3.1 标准输入函数scanf( )
2.3.2 多组数据输入
2.3.3 标准输出函数printf( )
2.3.4 输入输出的常见问题
2.4 赋值与算术运算
2.4.1 运算中的类型转换
2.4.2 运算的优先级
2.4.3 自增与自减运算
2.4.4 复合赋值运算符
2.5 运算中的类型转换
2.6 逻辑运算与if/else
2.7 运算符的优先级
2.8 数据表示基础3 :一维数组简介
2.9 宏定义与常量的符号表示
2.10 标准库函数简介
2.11 本章小结
练习题
第3章 数据处理基础
3.1 数值在计算机中的编码
3.1.1 十进制与二进制
3.1.2 数据的存储与理解
3.2 数的编码
3.2.1 原码
3.2.2 反码
3.2.3 补码
3.3 位运算
3.3.1 位运算符
3.3.2 位运算实例
3.4 其他进制
3.4.1 八进制与十六进制
3.4.2 更多进制
3.5 变量与数据存储
3.5.1 变量与内存地址
3.5.2 数的存储范围
3.6 浮点数的表达与存储简介
3.6.1 小数在数学意义上的二进制表示
3.6.2 用二进制表示小数的不足
3.6.3 浮点数的编码与存储
3.7 数组基础
3.7.1 数组与内存地址
3.7.2 数组访问与带参数的宏定义
3.7.3 数组应用实例
3.8 标准输入输出与文件重新定向
3.8.1 用函数实现输入输出重新定向
3.8.2 命令行模式下的输入输出重定向
3.9 本章小结
练习题
第二部分 基础篇
第4章 控制结构
4.1 结构化程序设计
4.1.1 从goto 到结构化编程
4.1.2 理解结构化程序设计
4.1.3 三类控制结构
4.1.4 利用计算机求解问题:算法
4.2 选择结构
4.2.1 基本选择结构
4.2.2 条件运算符
4.2.3 嵌套选择结构与程序效率分析
4.2.4 多路选择结构switch
4.3 循环结构
4.3.1 while 循环结构
4.3.2 for 循环结构
4.3.3 do...while 循环结构
4.3.4 选用合适的循环结构
4.3.5 循环结构的嵌套
4.3.6 循环结构的非常规控制:break 和continue
4.4 再论goto 语句
4.5 本章小结
练习题
第5章 函数基础
5.1 函数定义与调用
5.1.1 函数的声明与调用
5.1.2 自定义函数
5.2 函数的模块化编程方法
5.2.1 函数的形参与实参
5.2.2 函数参数的值传递
5.2.3 函数重在接口的原理
5.2.4 局部变量与全局变量
5.3 递归函数
5.3.1 递归的基本概念
5.3.2 递归函数与隐函数
5.3.3 递归重在调用的思想
5.4 标准库函数的应用简介
5.5 本章小结
练习题
第6章 数组
6.1 一维数组
6.1.1 一维数组的定义
6.1.2 一维数组初始化
6.1.3 数组越界访问
6.1.4 数组的复制
6.1.5 sizeof 应用于数组
6.1.6 一维数组作为函数参数
6.1.7 变长数组及其隐患
6.2 排序
6.2.1 冒泡排序
6.2.2 选择排序
6.2.3 插入排序
6.2.4 快速排序
6.2.5 排序算法的稳定性
6.3 查找
6.3.1 顺序查找
6.3.2 折半查找
6.4 基于数组的常用数据结构
6.4.1 栈
6.4.2 队列
6.4.3 循环队列
6.4.4 哈希表
6.5 字符串
6.5.1 字符型数组与字符串
6.5.2 字符串的定义与初始化
6.5.3 字符串常量与字符串变量
6.5.4 标准字符串处理函数
6.6 二维数组与多维数组
6.6.1 二维数组的定义与初始化
6.6.2 二维数组的访问与存储
6.6.3 二维数组作为函数参数
6.6.4 二维字符数组
6.6.5 多维数组的定义与存储
6.7 数组应用与实践
6.8 本章小结
练习题
第三部分 进阶篇
第7章 指针基础
7.1 指针、地址、变量、内存之间的关系
7.2 数据类型的回顾
7.3 指针变量
7.3.1 指针变量的定义
7.3.2 指针与变量的关系
7.3.3 指针的初始化与赋值
7.3.4 通过指针访问数据
7.3.5 常量指针和指针常量
7.3.6 char* 型指针与字符串
7.3.7 指针作为函数参数
7.3.8 数组名和指针作为函数参数的关系
7.3.9 指针作为函数返回值
7.4 指针运算
7.4.1 指针加减整数
7.4.2 指针与下标
7.4.3 指针相减
7.4.4 其他指针运算
7.4.5 指针的比较
7.4.6 指针的强制类型转换
7.5 void * 指针与memcpy 函数
7.6 malloc( ) 函数与堆空间
7.7 本章小结
练习题
第8章 指针进阶
8.1 指针与数组
8.2 数组类型与数组指针
8.2.1 数组类型
8.2.2 数组指针
8.3 多维数组与数组指针
8.3.1 二维数组的深入理解
8.3.2 二维数组作为函数参数的本质
8.3.3 高维数组的深入理解
8.3.4 多维数组下标与线性地址偏移
8.4 多重指针
8.5 指针数组
8.5.1 指针数组
8.5.2 指针数组与二维数组
8.6 命令行参数
8.7 函数指针
8.7.1 函数指针
8.7.2 函数指针的用法与意义
8.7.3 使用函数指针的库函数
8.8 本章小结
练习题
第9章 结构体与联合体
9.1 struct 结构体
9.1.1 结构体类型的定义
9.1.2 结构体变量的定义
9.1.3 结构体成员的对齐
9.1.4 结构体的初始化
9.1.5 结构体的访问
9.1.6 结构体类型的嵌套定义
9.1.7 无名结构体
9.1.8 结构体数组
9.2 union 联合体
9.2.1 联合体类型与变量的定义
9.2.2 联合体变量的用法
9.3 typedef 类型定义关键字
9.3.1 自定义类型基本概念
9.3.2 自定义复合数据类型
9.4 链表简介
9.4.1 链表创建
9.4.2 链表遍历
9.4.3 链表插入与删除
9.5 本章小结
练习题
第四部分 高级篇
第10章 文件与文件流
10.1 文件简介
10.1.1 理解文件流
10.1.2 文件的操作
10.1.3 文件的分类
10.1.4 正文文件与二进制文件的区别
10.2 文件流的打开、读写和关闭
10.2.1 打开文件
10.2.2 关闭文件
10.3 文件流的读写操作
10.3.1 正文格式读写
10.3.2 二进制格式读写
10.4 文件流操作的规则
10.4.1 Windows 系统的操作组合
10.4.2 Linux 系统的操作组合
10.4.3 跨平台文件操作
10.5 文件流的定位与flush
10.5.1 文件流的原理
10.5.2 文件流的定位
10.5.3 文件流的flush
10.6 本章小结
练习题
第11章 程序开发的基本过程
11.1 需求分析
11.1.1 程序目标的描述
11.1.2 数学模型的建立
11.1.3 空间换时间的优化策略
11.2 方案设计
11.2.1 核心问题的分解
11.2.2 解题思路的确定
11.2.3 数据结构的选择
11.2.4 算法的设计
11.3 编码实现
11.3.1 代码的结构
11.3.2 函数的原则
11.4 调试与测试简介
11.4.1 调试的基本步骤
11.4.2 调试的方法
11.4.3 测试的思想
11.5 本章小结
练习题
附录A gcc 编译器的安装
附录B Code::Blocks 集成开发环境的安装
附录C ASCII 码表
附录D 运算优先级表
附录E 常用库函数
参考文献
前辅文
第一部分 入门篇
第1章 编程快速入门
1.1 用C 语言编程的基本步骤
1.1.1 编辑、编译、运行
1.1.2 更完整的C 程序开发步骤
1.2 初识C 语言编程
1.2.1 程序的基本结构和语法
1.2.2 基本的算术运算与数据类型
1.2.3 选择语句if 与关系运算
1.2.4 循环语句while 简介
1.3 如何学编程
1.4 本章小结
练习题
第2章 编程基础框架
2.1 数据表示基础1 :常量
2.1.1 十进制整数
2.1.2 实数
2.1.3 字符与ASCII 码
2.1.4 转义字符
2.1.5 字符串
2.2 数据表示基础2 :变量
2.2.1 变量类型与变量定义
2.2.2 变量命令规则与方法
2.2.3 数据类型及数据表示范围
2.2.4 变量赋值与数据类型转换
2.3 格式化输入输出
2.3.1 标准输入函数scanf( )
2.3.2 多组数据输入
2.3.3 标准输出函数printf( )
2.3.4 输入输出的常见问题
2.4 赋值与算术运算
2.4.1 运算中的类型转换
2.4.2 运算的优先级
2.4.3 自增与自减运算
2.4.4 复合赋值运算符
2.5 运算中的类型转换
2.6 逻辑运算与if/else
2.7 运算符的优先级
2.8 数据表示基础3 :一维数组简介
2.9 宏定义与常量的符号表示
2.10 标准库函数简介
2.11 本章小结
练习题
第3章 数据处理基础
3.1 数值在计算机中的编码
3.1.1 十进制与二进制
3.1.2 数据的存储与理解
3.2 数的编码
3.2.1 原码
3.2.2 反码
3.2.3 补码
3.3 位运算
3.3.1 位运算符
3.3.2 位运算实例
3.4 其他进制
3.4.1 八进制与十六进制
3.4.2 更多进制
3.5 变量与数据存储
3.5.1 变量与内存地址
3.5.2 数的存储范围
3.6 浮点数的表达与存储简介
3.6.1 小数在数学意义上的二进制表示
3.6.2 用二进制表示小数的不足
3.6.3 浮点数的编码与存储
3.7 数组基础
3.7.1 数组与内存地址
3.7.2 数组访问与带参数的宏定义
3.7.3 数组应用实例
3.8 标准输入输出与文件重新定向
3.8.1 用函数实现输入输出重新定向
3.8.2 命令行模式下的输入输出重定向
3.9 本章小结
练习题
第二部分 基础篇
第4章 控制结构
4.1 结构化程序设计
4.1.1 从goto 到结构化编程
4.1.2 理解结构化程序设计
4.1.3 三类控制结构
4.1.4 利用计算机求解问题:算法
4.2 选择结构
4.2.1 基本选择结构
4.2.2 条件运算符
4.2.3 嵌套选择结构与程序效率分析
4.2.4 多路选择结构switch
4.3 循环结构
4.3.1 while 循环结构
4.3.2 for 循环结构
4.3.3 do...while 循环结构
4.3.4 选用合适的循环结构
4.3.5 循环结构的嵌套
4.3.6 循环结构的非常规控制:break 和continue
4.4 再论goto 语句
4.5 本章小结
练习题
第5章 函数基础
5.1 函数定义与调用
5.1.1 函数的声明与调用
5.1.2 自定义函数
5.2 函数的模块化编程方法
5.2.1 函数的形参与实参
5.2.2 函数参数的值传递
5.2.3 函数重在接口的原理
5.2.4 局部变量与全局变量
5.3 递归函数
5.3.1 递归的基本概念
5.3.2 递归函数与隐函数
5.3.3 递归重在调用的思想
5.4 标准库函数的应用简介
5.5 本章小结
练习题
第6章 数组
6.1 一维数组
6.1.1 一维数组的定义
6.1.2 一维数组初始化
6.1.3 数组越界访问
6.1.4 数组的复制
6.1.5 sizeof 应用于数组
6.1.6 一维数组作为函数参数
6.1.7 变长数组及其隐患
6.2 排序
6.2.1 冒泡排序
6.2.2 选择排序
6.2.3 插入排序
6.2.4 快速排序
6.2.5 排序算法的稳定性
6.3 查找
6.3.1 顺序查找
6.3.2 折半查找
6.4 基于数组的常用数据结构
6.4.1 栈
6.4.2 队列
6.4.3 循环队列
6.4.4 哈希表
6.5 字符串
6.5.1 字符型数组与字符串
6.5.2 字符串的定义与初始化
6.5.3 字符串常量与字符串变量
6.5.4 标准字符串处理函数
6.6 二维数组与多维数组
6.6.1 二维数组的定义与初始化
6.6.2 二维数组的访问与存储
6.6.3 二维数组作为函数参数
6.6.4 二维字符数组
6.6.5 多维数组的定义与存储
6.7 数组应用与实践
6.8 本章小结
练习题
第三部分 进阶篇
第7章 指针基础
7.1 指针、地址、变量、内存之间的关系
7.2 数据类型的回顾
7.3 指针变量
7.3.1 指针变量的定义
7.3.2 指针与变量的关系
7.3.3 指针的初始化与赋值
7.3.4 通过指针访问数据
7.3.5 常量指针和指针常量
7.3.6 char* 型指针与字符串
7.3.7 指针作为函数参数
7.3.8 数组名和指针作为函数参数的关系
7.3.9 指针作为函数返回值
7.4 指针运算
7.4.1 指针加减整数
7.4.2 指针与下标
7.4.3 指针相减
7.4.4 其他指针运算
7.4.5 指针的比较
7.4.6 指针的强制类型转换
7.5 void * 指针与memcpy 函数
7.6 malloc( ) 函数与堆空间
7.7 本章小结
练习题
第8章 指针进阶
8.1 指针与数组
8.2 数组类型与数组指针
8.2.1 数组类型
8.2.2 数组指针
8.3 多维数组与数组指针
8.3.1 二维数组的深入理解
8.3.2 二维数组作为函数参数的本质
8.3.3 高维数组的深入理解
8.3.4 多维数组下标与线性地址偏移
8.4 多重指针
8.5 指针数组
8.5.1 指针数组
8.5.2 指针数组与二维数组
8.6 命令行参数
8.7 函数指针
8.7.1 函数指针
8.7.2 函数指针的用法与意义
8.7.3 使用函数指针的库函数
8.8 本章小结
练习题
第9章 结构体与联合体
9.1 struct 结构体
9.1.1 结构体类型的定义
9.1.2 结构体变量的定义
9.1.3 结构体成员的对齐
9.1.4 结构体的初始化
9.1.5 结构体的访问
9.1.6 结构体类型的嵌套定义
9.1.7 无名结构体
9.1.8 结构体数组
9.2 union 联合体
9.2.1 联合体类型与变量的定义
9.2.2 联合体变量的用法
9.3 typedef 类型定义关键字
9.3.1 自定义类型基本概念
9.3.2 自定义复合数据类型
9.4 链表简介
9.4.1 链表创建
9.4.2 链表遍历
9.4.3 链表插入与删除
9.5 本章小结
练习题
第四部分 高级篇
第10章 文件与文件流
10.1 文件简介
10.1.1 理解文件流
10.1.2 文件的操作
10.1.3 文件的分类
10.1.4 正文文件与二进制文件的区别
10.2 文件流的打开、读写和关闭
10.2.1 打开文件
10.2.2 关闭文件
10.3 文件流的读写操作
10.3.1 正文格式读写
10.3.2 二进制格式读写
10.4 文件流操作的规则
10.4.1 Windows 系统的操作组合
10.4.2 Linux 系统的操作组合
10.4.3 跨平台文件操作
10.5 文件流的定位与flush
10.5.1 文件流的原理
10.5.2 文件流的定位
10.5.3 文件流的flush
10.6 本章小结
练习题
第11章 程序开发的基本过程
11.1 需求分析
11.1.1 程序目标的描述
11.1.2 数学模型的建立
11.1.3 空间换时间的优化策略
11.2 方案设计
11.2.1 核心问题的分解
11.2.2 解题思路的确定
11.2.3 数据结构的选择
11.2.4 算法的设计
11.3 编码实现
11.3.1 代码的结构
11.3.2 函数的原则
11.4 调试与测试简介
11.4.1 调试的基本步骤
11.4.2 调试的方法
11.4.3 测试的思想
11.5 本章小结
练习题
附录A gcc 编译器的安装
附录B Code::Blocks 集成开发环境的安装
附录C ASCII 码表
附录D 运算优先级表
附录E 常用库函数
参考文献
前辅文
第一部分 入门篇
第1章 编程快速入门
1.1 用C 语言编程的基本步骤
1.1.1 编辑、编译、运行
1.1.2 更完整的C 程序开发步骤
1.2 初识C 语言编程
1.2.1 程序的基本结构和语法
1.2.2 基本的算术运算与数据类型
1.2.3 选择语句if 与关系运算
1.2.4 循环语句while 简介
1.3 如何学编程
1.4 本章小结
练习题
第2章 编程基础框架
2.1 数据表示基础1 :常量
2.1.1 十进制整数
2.1.2 实数
2.1.3 字符与ASCII 码
2.1.4 转义字符
2.1.5 字符串
2.2 数据表示基础2 :变量
2.2.1 变量类型与变量定义
2.2.2 变量命令规则与方法
2.2.3 数据类型及数据表示范围
2.2.4 变量赋值与数据类型转换
2.3 格式化输入输出
2.3.1 标准输入函数scanf( )
2.3.2 多组数据输入
2.3.3 标准输出函数printf( )
2.3.4 输入输出的常见问题
2.4 赋值与算术运算
2.4.1 运算中的类型转换
2.4.2 运算的优先级
2.4.3 自增与自减运算
2.4.4 复合赋值运算符
2.5 运算中的类型转换
2.6 逻辑运算与if/else
2.7 运算符的优先级
2.8 数据表示基础3 :一维数组简介
2.9 宏定义与常量的符号表示
2.10 标准库函数简介
2.11 本章小结
练习题
第3章 数据处理基础
3.1 数值在计算机中的编码
3.1.1 十进制与二进制
3.1.2 数据的存储与理解
3.2 数的编码
3.2.1 原码
3.2.2 反码
3.2.3 补码
3.3 位运算
3.3.1 位运算符
3.3.2 位运算实例
3.4 其他进制
3.4.1 八进制与十六进制
3.4.2 更多进制
3.5 变量与数据存储
3.5.1 变量与内存地址
3.5.2 数的存储范围
3.6 浮点数的表达与存储简介
3.6.1 小数在数学意义上的二进制表示
3.6.2 用二进制表示小数的不足
3.6.3 浮点数的编码与存储
3.7 数组基础
3.7.1 数组与内存地址
3.7.2 数组访问与带参数的宏定义
3.7.3 数组应用实例
3.8 标准输入输出与文件重新定向
3.8.1 用函数实现输入输出重新定向
3.8.2 命令行模式下的输入输出重定向
3.9 本章小结
练习题
第二部分 基础篇
第4章 控制结构
4.1 结构化程序设计
4.1.1 从goto 到结构化编程
4.1.2 理解结构化程序设计
4.1.3 三类控制结构
4.1.4 利用计算机求解问题:算法
4.2 选择结构
4.2.1 基本选择结构
4.2.2 条件运算符
4.2.3 嵌套选择结构与程序效率分析
4.2.4 多路选择结构switch
4.3 循环结构
4.3.1 while 循环结构
4.3.2 for 循环结构
4.3.3 do...while 循环结构
4.3.4 选用合适的循环结构
4.3.5 循环结构的嵌套
4.3.6 循环结构的非常规控制:break 和continue
4.4 再论goto 语句
4.5 本章小结
练习题
第5章 函数基础
5.1 函数定义与调用
5.1.1 函数的声明与调用
5.1.2 自定义函数
5.2 函数的模块化编程方法
5.2.1 函数的形参与实参
5.2.2 函数参数的值传递
5.2.3 函数重在接口的原理
5.2.4 局部变量与全局变量
5.3 递归函数
5.3.1 递归的基本概念
5.3.2 递归函数与隐函数
5.3.3 递归重在调用的思想
5.4 标准库函数的应用简介
5.5 本章小结
练习题
第6章 数组
6.1 一维数组
6.1.1 一维数组的定义
6.1.2 一维数组初始化
6.1.3 数组越界访问
6.1.4 数组的复制
6.1.5 sizeof 应用于数组
6.1.6 一维数组作为函数参数
6.1.7 变长数组及其隐患
6.2 排序
6.2.1 冒泡排序
6.2.2 选择排序
6.2.3 插入排序
6.2.4 快速排序
6.2.5 排序算法的稳定性
6.3 查找
6.3.1 顺序查找
6.3.2 折半查找
6.4 基于数组的常用数据结构
6.4.1 栈
6.4.2 队列
6.4.3 循环队列
6.4.4 哈希表
6.5 字符串
6.5.1 字符型数组与字符串
6.5.2 字符串的定义与初始化
6.5.3 字符串常量与字符串变量
6.5.4 标准字符串处理函数
6.6 二维数组与多维数组
6.6.1 二维数组的定义与初始化
6.6.2 二维数组的访问与存储
6.6.3 二维数组作为函数参数
6.6.4 二维字符数组
6.6.5 多维数组的定义与存储
6.7 数组应用与实践
6.8 本章小结
练习题
第三部分 进阶篇
第7章 指针基础
7.1 指针、地址、变量、内存之间的关系
7.2 数据类型的回顾
7.3 指针变量
7.3.1 指针变量的定义
7.3.2 指针与变量的关系
7.3.3 指针的初始化与赋值
7.3.4 通过指针访问数据
7.3.5 常量指针和指针常量
7.3.6 char* 型指针与字符串
7.3.7 指针作为函数参数
7.3.8 数组名和指针作为函数参数的关系
7.3.9 指针作为函数返回值
7.4 指针运算
7.4.1 指针加减整数
7.4.2 指针与下标
7.4.3 指针相减
7.4.4 其他指针运算
7.4.5 指针的比较
7.4.6 指针的强制类型转换
7.5 void * 指针与memcpy 函数
7.6 malloc( ) 函数与堆空间
7.7 本章小结
练习题
第8章 指针进阶
8.1 指针与数组
8.2 数组类型与数组指针
8.2.1 数组类型
8.2.2 数组指针
8.3 多维数组与数组指针
8.3.1 二维数组的深入理解
8.3.2 二维数组作为函数参数的本质
8.3.3 高维数组的深入理解
8.3.4 多维数组下标与线性地址偏移
8.4 多重指针
8.5 指针数组
8.5.1 指针数组
8.5.2 指针数组与二维数组
8.6 命令行参数
8.7 函数指针
8.7.1 函数指针
8.7.2 函数指针的用法与意义
8.7.3 使用函数指针的库函数
8.8 本章小结
练习题
第9章 结构体与联合体
9.1 struct 结构体
9.1.1 结构体类型的定义
9.1.2 结构体变量的定义
9.1.3 结构体成员的对齐
9.1.4 结构体的初始化
9.1.5 结构体的访问
9.1.6 结构体类型的嵌套定义
9.1.7 无名结构体
9.1.8 结构体数组
9.2 union 联合体
9.2.1 联合体类型与变量的定义
9.2.2 联合体变量的用法
9.3 typedef 类型定义关键字
9.3.1 自定义类型基本概念
9.3.2 自定义复合数据类型
9.4 链表简介
9.4.1 链表创建
9.4.2 链表遍历
9.4.3 链表插入与删除
9.5 本章小结
练习题
第四部分 高级篇
第10章 文件与文件流
10.1 文件简介
10.1.1 理解文件流
10.1.2 文件的操作
10.1.3 文件的分类
10.1.4 正文文件与二进制文件的区别
10.2 文件流的打开、读写和关闭
10.2.1 打开文件
10.2.2 关闭文件
10.3 文件流的读写操作
10.3.1 正文格式读写
10.3.2 二进制格式读写
10.4 文件流操作的规则
10.4.1 Windows 系统的操作组合
10.4.2 Linux 系统的操作组合
10.4.3 跨平台文件操作
10.5 文件流的定位与flush
10.5.1 文件流的原理
10.5.2 文件流的定位
10.5.3 文件流的flush
10.6 本章小结
练习题
第11章 程序开发的基本过程
11.1 需求分析
11.1.1 程序目标的描述
11.1.2 数学模型的建立
11.1.3 空间换时间的优化策略
11.2 方案设计
11.2.1 核心问题的分解
11.2.2 解题思路的确定
11.2.3 数据结构的选择
11.2.4 算法的设计
11.3 编码实现
11.3.1 代码的结构
11.3.2 函数的原则
11.4 调试与测试简介
11.4.1 调试的基本步骤
11.4.2 调试的方法
11.4.3 测试的思想
11.5 本章小结
练习题
附录A gcc 编译器的安装
附录B Code::Blocks 集成开发环境的安装
附录C ASCII 码表
附录D 运算优先级表
附录E 常用库函数
参考文献














