第1章 C语言初步知识 1
1.1 C语言的发展历史 1
1.2 C语言的特点 1
1.3 C语言的程序结构 2
1.3.1 C语言程序举例 2
1.3.2 C语言程序的组成结构 4
1.3.3 良好的编程习惯 5
1.4 利用Visual C++运行C程序 5
1.4.1 Visual C++简介 5
1.4.2 在Visual C++中运行C程序 7
1.5 典型习题分析解答 11
习题一 12
第2章 数据类型、运算符与表达式 14
2.1 C语言的数据类型 14
2.2 常量与变量 15
2.2.1 标识符 15
2.2.2 常量 15
2.2.3 变量 16
2.3 整数类型 17
2.3.1 整型常量 17
2.3.2 整型变量 18
2.4 实数类型 19
2.4.1 实型常量 19
2.4.2 实型变量 19
2.5 字符类型 19
2.5.1 字符型常量 19
2.5.2 字符型变量 21
2.6 运算符与表达式 22
2.6.1 算术运算符和算术表达式 22
2.6.2 赋值运算符和赋值表达式 23
2.6.3 自加自减运算符与表达式 24
2.6.4 不同类型数据之间的转换 25
2.7 典型习题分析解答 26
习题二 27
第3章 顺序结构 30
3.1 字符型数据的输入输出 30
3.1.1 putchar()函数 30
3.1.2 getchar()函数 31
3.2 格式输入输出 31
3.2.1 printf()函数 31
3.2.2 scanf()函数 34
3.3 程序的三种基本结构 36
3.4 典型习题分析解答 40
习题三 41
第4章 选择结构 44
4.1 关系运算和逻辑运算 44
4.1.1 关系运算符和关系表达式 44
4.1.2 逻辑运算符和逻辑表达式 45
4.2 if语句 46
4.2.1 if语句的三种形式 46
4.2.2 if语句的嵌套 49
4.2.3 条件运算符和条件表达式 50
4.3 switch语句 51
4.3.1 switch语句及执行过程 51
4.3.2 break语句在switch中的使用 52
4.4 典型习题分析解答 52
习题四 55
第5章 循环结构 57
5.1 while语句 57
5.2 do-while语句 59
5.3 for语句 60
5.3.1 for语句的一般形式 61
5.3.2 for语句的执行过程 61
5.4 循环的嵌套 63
5.5 continue语句 65
5.6 典型习题分析解答 66
习题五 69
第6章 函数 73
6.1 函数分类与文件包含 73
6.1.1 函数分类 74
6.1.2 文件包含 75
6.2 函数的定义 76
6.2.1 函数定义的一般形式 76
6.2.2 形参和实参 77
6.2.3 函数的返回值 78
6.3 函数的声明和调用 79
6.3.1 函数的声明 79
6.3.2 函数的调用 79
6.4 函数的嵌套与递归 80
6.4.1 函数的嵌套调用 80
6.4.2 函数的递归调用 81
6.5 局部变量与全局变量 83
6.5.1 局部变量 83
6.5.2 全局变量 84
6.6 内部函数与外部函数 85
6.6.1 内部函数 85
6.6.2 外部函数 85
6.6.3 多个源程序文件的编译和连接 86
6.7 典型习题分析解答 90
习题六 93
第7章 数组 96
7.1 一维数组 96
7.1.1 一维数组的定义与初始化 96
7.1.2 一维数组元素的引用 98
7.1.3 一维数组元素的赋值 98
7.1.4 顺序查找 98
7.2 二维数组 99
7.2.1 二维数组的定义与初始化 100
7.2.2 二维数组元素的引用 100
7.2.3 二维数组元素的赋值 101
7.3 字符数组 101
7.3.1 字符数组的定义和初始化 101
7.3.2 字符串处理函数 102
7.4 数组在函数中的应用 105
7.5 折半查找 108
7.6 数组元素排序 110
7.6.1 线性插入排序 110
7.6.2 折半插入排序 111
7.7 典型习题分析解答 112
习题七 114
第8章 指针 118
8.1 地址与指针概述 118
8.2 指针变量 119
8.2.1 定义一个指针变量 119
8.2.2 指针变量的赋值与引用 120
8.2.3 指针变量作为函数参数 124
8.3 一维数组与指针 125
8.3.1 指向数组元素的指针 125
8.3.2 通过指针引用数组元素 126
8.3.3 一维数组名作函数参数 130
8.4 二维数组与指针 132
8.4.1 引用单个数组元素 132
8.4.2 指向二维数组的指针变量 133
8.4.3 指向多维数组的指针变量 136
8.5 指向字符串的指针变量 136
8.5.1 用字符数组存放一个字符串 136
8.5.2 用字符指针变量指向一个字符串 137
8.6 数指针变量 139
8.7 指针型函数 140
8.8 指针数组和指向指针的指针 141
8.8.1 指针数组 141
8.8.2 指针数组作函数参数 143
8.8.3 指向指针的指针 143
8.8.4 main函数的参数 145
8.9 典型题分析 146
习题八 148
第9章 结构体与共用体 151
9.1 结构体类型的说明 151
9.2 结构体变量 152
9.2.1 结构体变量定义、初始化及引用 152
9.2.2 用结构体变量作函数参数 155
9.3 结构体数组 155
9.3.1 结构体数组的定义 155
9.3.2 结构体数组的初始化 156
9.3.3 结构体数组的使用 156
9.4 结构体指针 157
9.4.1 指向结构体变量的指针 158
9.4.2 指向结构体变量的指针作为函数参数 159
9.5 共用体 160
9.5.1 共用体类型的说明 160
9.5.2 共用体变量的定义、初始化及引用 160
9.6 用typedef定义类型 162
9.7 典型习题分析解答 163
习题九 166
第10章 文件的读写 171
10.1 文件与文件指针 171
10.1.1 文件分类 171
10.1.2 文件类型指针 171
10.2 文件的打开与关闭 172
10.2.1 文件的打开 172
10.2.2 文件关闭函数 173
10.3 文件位置指针的有关函数 174
10.4 读写文件 175
10.4.1 字符读写函数fgetc和fputc 175
10.4.2 字符串读写函数fgets和fputs 177
10.4.3 数据块读写函数fread和fwrite 178
10.4.4 格式化读写函数fscanf和fprintf 181
10.5 典型习题分析解答 183
习题十 184
第11章 位运算 186
11.1 位运算符概述 186
11.2 基本位运算符及其功能 186
11.2.1 按位与运算符“&” 186
11.2.2 按位或运算符“|” 188
11.2.3 按位异或运算符“∧” 188
11.2.4 求反运算符“~” 189
11.2.5 左移运算符“<<” 190
11.2.6 右移运算符“>>” 191
11.2.7 位运算的复合赋值运算符 191
11.2.8 不同长度的数据进行位运算 192
11.2.9 位运算符的优先级 192
11.3 位域(位段) 192
11.3.1 位域的定义和位域变量的说明 192
11.3.2 位域的使用 194
11.4 典型习题分析解答 194
习题十一 196
第12章 数据结构绪论 198
12.1 什么是数据结构 198
12.2 数据结构的基本概念和术语 199
12.3 算法和算法的描述 201
12.3.1 算法 201
12.3.2 算法的描述 201
12.3.3 算法评价 201
习题十二 202
第13章 线性表 204
13.1 线性表及其基本运算 204
13.1.1 线性表的定义 204
13.1.2 线性表的基本运算 204
13.2 线性表的顺序表示及基本操作 205
13.2.1 线性表的顺序表示 205
13.2.2 顺序表的基本操作 205
13.3 线性表的链式存储 206
13.3.1 单链表 206
13.3.2 循环链表 208
13.3.3 双向链表 209
13.4 典型习题分析解答 211
习题十三 212
第14章 栈、队列与树 216
14.1 栈 216
14.1.1 栈的定义 216
14.1.2 顺序栈的实现 217
14.2 队列 220
14.2.1 队列的定义 220
14.2.2 队列的基本操作 221
14.3 树 224
14.3.1 什么是树 225
14.3.2 二叉树的概念及性质 226
14.3.3 二叉树的存储及遍历 228
14.4 典型习题分析解答 235
习题十四 239
第15章 查找与排序 242
15.1 查找与排序的基本概念 242
15.1.1 查找的基本概念 242
15.1.2 排序的基本概念 243
15.2 查找算法 244
15.2.1 顺序查找 244
15.2.2 折半查找 245
15.2.3 分块查找 246
15.3 排序算法 247
15.3.1 插入排序 247
15.3.2 选择排序 250
15.3.3 交换排序 253
15.4 典型习题分析解答 256
习题十五 258
附录A 运算符的优先级别和结合方向 261
附录B 常用字符与ASCII码对照表 262
附录C 常用Turbo C库函数 264
参考文献 268