1 C语言程序设计概述 1
1.1 计算机语言发展简史 1
1.2 计算机中数据的表示 3
1.2.1 原码、反码、补码 3
1.2.2 ASCII码 3
1.3 C语言的特点 4
1.3.1 C语言简介 4
1.3.2 C语言特点 5
1.4 C语言模块 6
1.4.1 计算机程序 6
1.4.2 模块与C语言结构 6
1.5 算法 11
1.5.1 算法的概念 11
1.5.2 结构化表示算法 11
1.6 软件工程概念 14
1.6.1 软件危机 14
1.6.2 软件工程 14
1.6.3 瀑布模型 15
小结1 16
习题1 16
2 函数 17
2.1 函数的概念 17
2.1.1 函数引入 17
2.1.2 函数分类 18
2.2 函数定义 18
2.3 基本数据类型 20
2.3.1 常量概念、3种基本数据类型 20
2.3.2 变量概念、关键字、标识符 22
2.4 使用printf()、scanf()函数 23
2.5 运算符及表达式 27
2.5.1 运算符概念 27
2.5.2 表达式概念 28
2.5.3 算术运算符和算术表达式 28
2.5.4 自动类型转换和强制类型转换 29
2.5.5 前缀、后缀自增(减)运算符 30
2.5.6 赋值运算符与赋值表达式 32
2.5.7 逗号运算符和逗号表达式 33
2.5.8 关系运算符和关系表达式 33
2.5.9 逻辑运算符和逻辑表达式 34
2.5.10 取地址运算符和间接访问运算符 35
2.5.11 类型长度运算符 36
2.5.12 位运算符 36
2.5.13 条件运算符 38
2.5.14 C语言语句分类 38
2.6 计算机存储器地址概念 40
2.6.1 地址概念 40
2.6.2 静态存储区概念 40
2.7 自定义函数设计举例 41
2.8 局部变量、全局变量、静态变量及其值传递 43
2.8.1 从不同角度对函数分类 43
2.8.2 局部变量 44
2.8.3 主调函数与被调函数之间的值传递 45
2.8.4 全局变量 47
2.8.5 静态变量 49
2.9 编译预处理 50
2.9.1 宏定义 50
2.9.2 文件包含 58
2.9.3 条件编译 59
小结2 61
习题2 61
3 程序控制结构语句与数组 65
3.1 顺序结构程序设计 65
3.2 选择结构程序设计 66
3.2.1 if语句 66
3.2.2 switch语句 73
3.2.3 选择结构程序设计举例 75
3.3 循环结构程序设计 79
3.3.1 4种循环结构 79
3.3.2 break与continue语句 89
3.3.3 循环结构程序设计举例 90
3.4 数组 92
3.4.1 一维数组 92
3.4.2 二维数组 96
3.4.3 字符数组 100
小结3 104
习题3 105
4 指针 111
4.1 指针与指针变量 111
4.1.1 指针的概念 111
4.1.2 指针变量 111
4.2 指针变量与数组 117
4.2.1 指针变量与数组 117
4.2.2 指针变量在一维数组中的应用 119
4.2.3 指针变量在多维数组中的应用 121
4.2.4 指针变量在字符数组中的应用 127
4.3 指针数组与多级指针 130
4.3.1 指针数组的定义 130
4.3.2 指针数组的使用 130
4.3.3 多级指针 132
4.4 指针变量与函数 134
4.4.1 函数的操作方式与指针变量 134
4.4.2 指针型函数的定义与使用 134
4.4.3 函数指针的定义与使用 135
4.4.4 与指针有关的函数参数传递方式 137
4.4.5 带参数的main函数和命令行参数 143
小结4 144
习题4 146
5 结构体、共用体、枚举类型 153
5.1 结构体类型变量的定义与引用 153
5.1.1 结构体类型的定义 153
5.1.2 结构体变量的定义 154
5.1.3 结构体变量的引用 157
5.1.4 结构体变量的初始化 158
5.1.5 位段 159
5.2 结构体数组 161
5.2.1 结构体数组的定义 161
5.2.2 结构体数组的初始化 163
5.2.3 结构体数组的引用 163
5.2.4 结构体数组应用举例 164
5.3 指针与结构体 167
5.3.1 指向结构体变量的指针 167
5.3.2 指向结构体数组的指针 170
5.3.3 用结构体变量和指向结构体的指针作函数参数 171
5.4 动态存储管理 174
5.4.1 需要动态存储管理的原因 174
5.4.2 C语言的动态存储管理机制 175
5.5 结构体应用举例 178
5.6 共用体 181
5.6.1 共用体及共用体变量的定义 181
5.6.2 共用体变量的引用方式 184
5.6.3 共用体类型数据的特点 184
5.7 枚举类型 186
5.7.1 枚举类型的定义及变量的定义 187
5.7.2 枚举类型应用举例 189
5.8 复合数据类型及typedef 190
小结5 191
习题5 192
6 文件 198
6.1 文件概述 198
6.1.1 文件的概念 198
6.1.2 文件系统 198
6.1.3 文件分类 199
6.2 文件类型指针 200
6.3 文件相关预定义函数 201
6.3.1 文件的打开与关闭 201
6.3.2 文件的读/写 202
6.3.3 文件的定位 211
6.4 应用举例 213
小结6 215
习题6 216
7 常用数据结构及其程序设计 219
7.1 线性表 219
7.1.1 线性表的定义和运算 219
7.1.2 顺序表 220
7.1.3 链表 222
7.2 栈和队列 227
7.2.1 栈的定义 227
7.2.2 栈的基本操作 228
7.2.3 队列的定义 229
7.2.4 顺序队列的基本操作 230
7.3 二叉树 231
7.3.1 树的定义 231
7.3.2 二叉树的定义 232
7.3.3 二叉树的链式存储 233
7.3.4 二叉树的遍历 235
小结7 236
习题7 237
8 C语言高级编程技术 238
8.1 递归程序设计 238
8.1.1 递归与递归程序设计 238
8.1.2 递归程序执行过程分析 239
8.1.3 递归算法的优缺点 241
8.1.4 递归程序设计的应用实例 241
8.2 文本的屏幕输出和键盘输入 245
8.2.1 文本的屏幕输出 245
8.2.2 键盘输入 251
8.3 图形程序设计 253
8.3.1 图形模式的初始化 253
8.3.2 图形模式下的坐标系 254
8.3.3 屏幕图形的色彩与相关操作 254
8.3.4 基本绘图函数 256
8.3.5 图形设计举例 259
8.4 发声技术 263
8.4.1 声音函数 263
8.4.2 计算机乐谱 264
8.5 Linux操作系统C语言编程基础 268
8.5.1 Linux操作系统基础 268
8.5.2 GCC的使用 268
8.5.3 利用GCC开发C语言程序 271
8.5.4 调试技巧 274
8.6 Windows操作系统C语言编程基础 276
8.6.1 Windows编程的特点 276
8.6.2 重要的Windows术语 278
8.6.3 编写基本的Windows应用程序 279
8.7 综合应用开发实例 286
8.7.1 问题定义 286
8.7.2 概要设计 286
8.7.3 详细设计 287
8.7.4 编码 288
小结8 299
习题8 300
附录 301
附录1 ASCII码表 301
附录2 运算符表 302
附录3 常用函数表 303
附录4 常用术语中英文对照表 313
附录5 计算机等级考试大纲及样题 315
参考文献 328