内容简介
第1篇 C语言基础知识
第1章 C语言概述
1.1 关于程序设计
1.1.1 了解程序设计
1.1.2 了解计算机语言
1.1.3 计算机语言的分类
1.2 C语言概述
1.2.1 C语言的历史发展
1.2.2 C语言的基本特点
1.3 C语言的开发环境
1.3.1 编辑器、编译器和链接器
1.3.2 集成开发环境
1.4 Turbo C的使用
1.5 Microsoft Visual C++6.0的使用
1.6 Hello World程序
1.7 A+B程序
1.8 程序错误和调试
1.9 小结
1.10 习题
第2章 C语言与算法
2.1 算法的基本概念
2.1.1 算法基础
2.1.2 算法特性
2.1.3 算法的使用举例
2.2 算法描述
2.2.1 自然语言
2.2.2 流程图
2.2.3 3种基本结构
2.2.4 N-S流程图
2.2.5 伪代码
2.3 小结
2.4 习题
第3章 C语言的构成——函数
3.1 函数概述
3.1.1 库函数
3.1.2 自定义函数
3.2 函数的定义和调用
3.2.1 简单函数的定义
3.2.2 简单函数的调用
3.3 函数的参数
3.3.1 带参数的函数定义
3.3.2 带参数的函数调用
3.3.3 形式参数与实际参数
3.4 函数的返回值
3.4.1 带返回值的函数定义
3.4.2 带返回值的函数调用
3.5 开发实践
3.6 小结
3.7 习题
第4章 常量、基本数据类型、运算符和表达式
4.1 常量与变量
4.1.1 常量与符号常量
4.1.2 变量
4.2 数据类型
4.2.1 整型数据
4.2.2 实型数据
4.2.3 字符型数据
4.2.4 枚举型数据
4.2.5 基本类型数据的输入和输出函数(scanf()/printf())
4.3 运算符和表达式
4.3.1 算数运算符和表达式
4.3.2 赋值运算符和表达式
4.3.3 关系运算符和表达式
4.3.4 逻辑运算符和表达式
4.3.5 条件运算符和表达式
4.3.6 逗号运算符和表达式
4.4 数据类型转换
4.4.1 隐式类型转换
4.4.2 强制类型转换
4.5 小结
4.6 习题
第5章 变量
5.1 变量的定义与使用
5.1.1 变量的定义和赋值
5.1.2 变量的命名规范
5.2 变量的作用范围
5.2.1 局部变量
5.2.2 全局变量
5.3 变量的存储类型
5.3.1 变量的3个属性
5.3.2 自动变量
5.3.3 寄存器变量
5.3.4 具有代码块作用域的静态变量
5.3.5 具有外部链接的静态变量
5.3.6 具有内部链接的静态变量
5.3.7 存储类型说明符
5.4 开发实践
5.5 小结
5.6 习题
第6章 流程控制
6.1 C语句概述
6.2 顺序结构程序
6.3 选择结构程序
6.3.1 单分支if语句
6.3.2 双分支if语句
6.3.3 多分支else-if语句
6.3.4 if语句的嵌套使用
6.3.5 switch语句的使用
6.4 循环结构程序
6.4.1 while语句的使用
6.4.2 do…while语句的使用
6.4.3 for语句的使用
6.4.4 三种循环语句对比
6.4.5 嵌套循环
6.4.6 continue语句和break语句
6.5 开发实践
6.6 小结
6.7 习题
第7章 数组
7.1 数组的概述
7.2 一维数组
7.2.1 一维数组的定义
7.2.2 数组元素的访问
7.2.3 一维数组的初始化
7.2.4 关于“下标越界”问题
7.2.5 一维数组程序举例
7.3 二维数组
7.3.1 二维数组的定义及初始化
7.3.2 二维数组元素的访问
7.3.3 二维数组的初始化
7.3.4 二维数组程序举例
7.4 开发实践
7.5 小结
7.6 习题
第8章 指针
8.1 指针概述
8.2 指针与变量
8.2.1 指针变量的定义
8.2.2 取地址运算符(&)
8.2.3 取值运算符(*)
8.2.4 指针变量赋值
8.3 指针与函数
8.3.1 指针作为函数参数
8.3.2 指针作为返回值
8.3.3 指向函数的指针
8.3.4 指向函数的指针作函数参数
8.4 指针与数组
8.4.1 指向数组元素的指针
8.4.2 指针的算术运算与数组运算
8.4.3 使用指针处理数组元素
8.4.4 数组名作为指针
8.4.5 指针数组
8.4.6 指向指针数据的指针
8.5 指针与多维数组
8.5.1 处理多维数组的元素
8.5.2 处理多维数组的行
8.5.3 命令行参数
8.6 开发实践
8.7 小结
8.8 习题
第9章 构造数据类型
9.1 结构体
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 共用体
9.3 类型定义符typedef
9.4 开发实践
9.5 小结
9.6 习题
第10章 预处理命令
10.1 预处理器的工作方式
10.2 预处理指令
10.3 宏定义
10.3.1 不带参数的宏
10.3.2 带参数的宏
10.3.3 #运算符
10.3.4 ##运算符
10.3.5 取消宏定义
10.3.6 宏和函数
10.3.7 宏定义(#define)和类型定义(typedef)
10.3.8 预定义宏
10.4 条件编译
10.4.1 #if...#endif指令
10.4.2 #if...#else...#endif指令
10.4.3 #if...#elif...#endif指令
10.4.4 #ifdef...#endif指令
10.4.5 #ifndef...#endif指令
10.4.6 条件编译的使用
10.5 文件包含
10.6 其他指令
10.6.1 #error指令
10.6.2 #line指令
10.6.3 #pragma指令
10.7 开发实践
10.8 小结
10.9 习题
第11章 再谈函数
11.1 函数的嵌套调用
11.2 函数的递归调用
11.2.1 使用递归
11.2.2 递归的基本原理
11.2.3 尾递归与循环
11.2.4 汉诺塔问题
11.2.5 递归的优缺点
11.3 数组做函数参数
11.3.1 数组元素做函数实参
11.3.2 数组名做函数参数
11.3.3 多维数组名做函数参数
11.4 内联函数
11.5 开发实践
11.6 小结
11.7 习题
第2篇 C语言进阶技巧
第12章 字符及字符串处理
12.1 字符串常量
12.1.1 字符串常量概述
12.1.2 存储字符串常量
12.1.3 字符串常量的表示
12.1.4 字符串常量与字符常量
12.2 字符串变量
12.2.1 字符数组的定义及初始化
12.2.2 字符数组与字符指针
12.2.3 指针与字符串
12.3 字符串的输入
12.3.1 创建存储空间
12.3.2 gets()函数
12.3.3 fgets()函数
12.3.4 scanf()函数
12.4 字符串的输出
12.4.1 puts()函数
12.4.2 fputs()函数
12.4.3 printf()函数
12.5 字符串处理函数
12.5.1 strlen()函数
12.5.2 strcat()函数
12.5.3 strcmp()函数
12.5.4 strcpy()函数
12.5.5 其他字符串处理函数
12.6 开发实践
12.7 小结
12.8 习题
第13章 内存处理
13.1 动态存储分配
13.1.1 内存分配函数
13.1.2 空指针
13.2 动态分配字符串
13.2.1 使用malloc()函数为字符串分配内存
13.2.2 在字符串函数中使用动态存储分配
13.3 动态分配数组
13.3.1 使用malloc()函数为数组分配内存
13.3.2 calloc()函数
13.3.3 realloc()函数
13.4 释放存储
13.4.1 free()函数
13.4.2 “无效指针”问题
13.5 链表
13.5.1 从数组到链表
13.5.2 声明结点类型
13.5.3 创建结点
13.5.4 →运算符
13.5.5 向链表中插入结点
13.5.6 搜索链表
13.5.7 删除链表结点
13.5.8 使用链表
13.6 开发实践
13.7 小结
13.8 习题
第14章 文件处理
14.1 流
14.1.1 文件指针
14.1.2 标准流与重定向
14.2 与文件通信
14.2.1 什么是文件
14.2.2 文本文件与二进制文件
14.3 文件操作
14.3.1 打开文件
14.3.2 关闭文件
14.3.3 为流附加文件
14.3.4 从命令行获取文件名
14.4 格式化的输入/输出
14.4.1 printf()函数与fprintf()函数
14.4.2 scanf()函数与fscanf()函数
14.5 字符的输入/输出
14.5.1 输出函数
14.5.2 输入函数
14.6 行的输入/输出
14.6.1 输入函数
14.6.2 输出函数
14.7 块的输入/输出
14.8 文件的定位
14.8.1 fseek()函数与ftell()函数
14.8.2 fgetpos()函数与fsetpos()函数
14.8.3 rewind()函数
14.9 字符串的输入/输出
14.10 其他标准I/O函数
14.10.1 ungetc()函数
14.10.2 fflush()函数
14.10.3 setvbuf()函数
14.10.4 feof()和ferror()函数
14.11 开发实践
14.12 小结
14.13 习题
第15章 底层程序设计
15.1 位运算符
15.1.1 位逻辑运算符
15.1.2 位逻辑运算符的用法
15.1.3 移位运算符
15.1.4 移位运算符的用法
15.2 位字段
15.3 开发实践
15.4 小结
15.5 习题
第16章 数学计算支持
16.1 浮点类型的特性
16.2 整数类型的大小
16.3 数学计算
16.3.1 三角函数
16.3.2 双曲函数
16.3.3 指数函数和对数函数
16.3.4 幂函数
16.3.5 就近取整函数、绝对值函数和取余函数
16.4 字符处理
16.4.1 字符测试函数
16.4.2 字符大小写转换函数
16.5 字符串处理
16.5.1 复制函数
16.5.2 拼接函数
16.5.3 比较函数
16.5.4 搜索函数
16.5.5 其他函数
16.6 开发实践
16.7 小结
16.8 习题
第17章 错误处理
17.1 诊断
17.2 错误
17.3 信号处理
17.3.1 信号宏
17.3.2 signal()函数
17.3.3 预定义的信号处理函数
17.3.4 raise()函数
17.4 非局部跳转
17.5 开发实践
17.6 小结
17.7 习题
第18章 国际化特性
18.1 本地化
18.1.1 类别
18.1.2 setlocale()函数
18.1.3 localeconv()函数
18.2 多字节字符和宽字符
18.3 开发实践
18.4 小结
18.5 习题
第3篇 C语言编程实战
第19章 五子棋游戏
19.1 五子棋游戏简介
19.2 需求分析
19.3 系统设计
19.4 主模块
19.5 棋盘模块
19.6 下棋模块
19.7 判断输赢模块
19.8 信息模块
19.9 系统界面
19.10 本章小结
19.11 习题
第20章 图书管理系统
20.1 需求分析
20.2 系统设计
20.3 主模块
20.4 录入数据模块
20.5 修改图书模块
20.6 查询图书模块
20.7 删除图书模块
20.8 文件模块
20.9 图书管理系统使用说明
20.10 本章小结
20.11 习题
第21章 制作通讯录
21.1 需求分析
21.2 系统设计
21.3 主模块
21.4 创建通讯录模块
21.5 排序模块
21.6 综合操作模块
21.7 保存通讯录模块
21.8 打开通讯录模块
21.9 删除模块
21.10 退出模块
21.11 通讯录系统使用说明
21.12 本章小结
21.13 习题