第1章 C语言概述 1
1.1 C语言的发展及特点 1
1.1.1 C语言的发展 1
1.1.2 C语言的特点 2
1.2 C语言程序的格式、构成及其基本要求 3
1.2.1 C语言程序的格式 4
1.2.2 C语言程序的构成 4
1.2.3 C语言程序的基本要求 5
1.3 C语言程序的编译和运行 6
1.4 算法 6
1.4.1 算法的概念 6
1.4.2 算法的特性 7
1.4.3 算法的表示方法 8
1.4.4 结构化程序设计 8
1.5 小型案例实训 10
1.6 学习加油站 11
1.6.1 重点整理 11
1.6.2 典型题解 12
1.7 上机实验 13
1.8 习题 14
第2章 C语言程序设计的初步知识 15
2.1 C语言的数据类型 15
2.2 标识符、常量和变量 16
2.2.1 标识符 16
2.2.2 常量 17
2.2.3 变量 17
2.3 整型数据 20
2.3.1 整型常量 20
2.3.2 整型变量 21
2.4 实型数据 22
2.4.1 实型常量 22
2.4.2 实型变量 23
2.5 字符型数据 23
2.5.1 字符常量 23
2.5.2 字符变量 24
2.5.3 字符串常量 26
2.6 算术运算符和算术表达式 27
2.6.1 基本的算术运算符和算术表达式 27
2.6.2 算术运算符的优先级、结合性 28
2.7 赋值运算符和赋值表达式 28
2.7.1 基本赋值运算符 28
2.7.2 复合赋值运算符 28
2.7.3 赋值表达式 29
2.8 逗号运算符和逗号表达式 29
2.9 自增运算符、自减运算符及C语言运算符的优先级 30
2.9.1 自增运算符 31
2.9.2 自减运算符 31
2.9.3 C语言运算符的优先级与结合性 31
2.10 不同类型数据间的混合运算 32
2.11 小型案例实训 33
2.12 学习加油站 34
2.12.1 重点整理 34
2.12.2 典型题解 35
2.13 上机实验 37
2.14 习题 38
第3章 顺序结构程序设计 40
3.1 C语言的几种语句 40
3.2 数据的输出 42
3.2.1 字符输出函数(putchar函数) 42
3.2.2 格式输出函数(printf函数) 42
3.3 数据的输入 46
3.3.1 字符输入函数(getchar函数) 46
3.3.2 格式输入函数(scanf函数) 46
3.4 小型案例实训 48
3.5 学习加油站 50
3.5.1 重点整理 50
3.5.2 典型题解 51
3.6 上机实验 53
3.7 习题 53
第4章 选择结构程序设计 56
4.1 关系运算符和关系表达式 56
4.1.1 关系运算符及其优先级 56
4.1.2 关系表达式 57
4.2 逻辑运算符和逻辑表达式 58
4.2.1 逻辑运算符及其优先级 58
4.2.2 逻辑表达式 59
4.3 条件运算符和条件表达式 60
4.4 if语句 61
4.4.1 if语句的三种形式 61
4.4.2 if语句的嵌套 64
4.5 switch语句 66
4.5.1 switch语句的基本格式 66
4.5.2 break语句 68
4.6 程序举例 68
4.7 小型案例实训 71
4.8 学习加油站 73
4.8.1 重点整理 73
4.8.2 典型题解 74
4.9 上机实验 77
4.10 习题 77
第5章 循环结构程序设计 80
5.1 while语句 80
5.1.1 while循环语句的一般格式 80
5.1.2 while循环语句的执行过程 81
5.2 do-while语句 82
5.2.1 do-while循环语句的一般格式 82
5.2.2 do-while循环语句的执行过程 83
5.3 for语句 84
5.3.1 for循环语句的一般格式 84
5.3.2 for循环语句的执行过程 85
5.4 break和continue语句在循环体中的作用 86
5.4.1 break语句在循环体中的作用 86
5.4.2 continue语句在循环体中的作用 87
5.5 语句标号和goto语句 88
5.5.1 语句标号 88
5.5.2 goto语句 88
5.6 循环结构的嵌套 89
5.7 小型案例实训 90
5.8 学习加油站 92
5.8.1 重点整理 92
5.8.2 典型题解 93
5.9 上机实验 96
5.10 习题 97
第6章 函数 101
6.1 函数概述 101
6.1.1 库函数的使用 101
6.1.2 函数的定义 103
6.2 函数的参数和返回值 105
6.2.1 函数的参数 105
6.2.2 函数的返回值 106
6.2.3 函数的声明 107
6.3 函数的参数传递方式 108
6.4 函数的调用 109
6.4.1 函数的一般调用 109
6.4.2 函数的嵌套调用 109
6.4.3 函数的递归调用 110
6.5 变量的作用域和存储类型 113
6.5.1 变量的作用域 113
6.5.2 变量的存储类型 114
6.6 函数的作用范围 119
6.6.1 内部函数 119
6.6.2 外部函数 119
6.7 小型案例实训 121
6.8 学习加油站 122
6.8.1 重点整理 122
6.8.2 典型题解 124
6.9 上机实验 126
6.10 习题 128
第7章 数组 131
7.1 一维数组 131
7.1.1 一维数组的定义 131
7.1.2 一维数组元素的引用 132
7.1.3 一维数组的初始化 132
7.1.4 一维数组的应用 133
7.2 二维数组 135
7.2.1 二维数组的定义 135
7.2.2 二维数组元素的引用 135
7.2.3 二维数组的初始化 136
7.2.4 二维数组的应用 137
7.3 字符数组 139
7.3.1 字符数组的定义及初始化 139
7.3.2 字符数组的引用 140
7.3.3 字符串处理函数 141
7.3.4 字符串数组 145
7.4 数组与函数 147
7.5 小型案例实训 149
7.6 学习加油站 150
7.6.1 重点整理 150
7.6.2 典型题解 151
7.7 上机实验 154
7.8 习题 154
第8章 编译预处理 157
8.1 宏定义 157
8.1.1 无参宏 157
8.1.2 带参宏 159
8.1.3 终止宏定义 161
8.2 文件包含命令 161
8.3 条件编译 163
8.4 小型案例实训 166
8.5 学习加油站 167
8.5.1 重点整理 167
8.5.2 典型题解 169
8.6 上机实验 170
8.7 习题 171
第9章 指针 174
9.1 指针概述 174
9.2 指针变量 175
9.2.1 指针变量的定义 175
9.2.2 指针变量的引用 176
9.2.3 指针变量的运算 178
9.3 指针与数组 180
9.3.1 指针与一维数组 180
9.3.2 指针与二维数组 183
9.3.3 指向行指针的指针变量 184
9.4 指针与字符串 186
9.5 指针数组 188
9.6 指针与函数 189
9.6.1 指针变量作为函数的参数 189
9.6.2 数组名作为函数的参数 190
9.6.3 函数的返回值为指针 192
9.6.4 指向函数的指针 193
9.6.5 指向函数的指针作为函数的参数 195
9.7 指向指针的指针 195
9.8 main函数的形参和void指针 198
9.8.1 指针数组作为main函数的形参 198
9.8.2 指向void的指针变量 199
9.8.3 动态存储分配 200
9.9 小型案例实训 202
9.10 学习加油站 204
9.10.1 重点整理 204
9.10.2 典型题解 205
9.11 上机实验 209
9.12 习题 210
第10章 构造数据类型 213
10.1 结构体 213
10.1.1 结构体定义 213
10.1.2 结构体变量 215
10.1.3 结构体变量的使用 216
10.2 结构体与函数 221
10.2.1 结构变量与结构数组作函数的参数 221
10.2.2 结构变量作为函数的返回值 223
10.3 结构体与指针 223
10.3.1 结构体变量指针 223
10.3.2 结构体数组指针 224
10.4 链表 226
10.4.1 链表概述 226
10.4.2 链表的基本操作 227
10.5 共用体 232
10.6 枚举类型 234
10.7 typedef类型声明 235
10.8 小型案例实训 237
10.9 学习加油站 242
10.9.1 重点整理 242
10.9.2 典型题解 244
10.10 上机实验 248
10.11 习题 249
第11章 文件 253
11.1 文件概述 253
11.2 文件类型指针 254
11.3 文件的基本操作 255
11.3.1 文件的打开 255
11.3.2 文件的关闭 256
11.3.3 文件的读函数 257
11.3.4 文件的写函数 260
11.4 文件的定位函数 264
11.5 文件出错检测函数 268
11.6 小型案例实训 268
11.7 学习加油站 273
11.7.1 重点整理 273
11.7.2 典型题解 274
11.8 上机实验 279
11.9 习题 279
第12章 位运算 283
12.1 位运算符 283
12.2 位段 289
12.3 小型案例实训 290
12.4 学习加油站 293
12.4.1 重点整理 293
12.4.2 典型题解 293
12.5 上机实验 294
12.6 习题 294
第13章 项目实践 296
13.1 软件开发过程 296
13.1.1 可行性和需求分析 296
13.1.2 系统设计 297
13.1.3 软件编码 301
13.1.4 软件测试 304
13.1.5 小结 305
13.2 旅店管理系统 305
13.2.1 需求分析 305
13.2.2 系统设计 306
13.2.3 程序代码 307
13.2.4 软件测试 333
附录A 运算符的优先级和结合性 334
附录B 常用字符与ASCII代码对照表 335
附录C 各章习题参考答案 336
参考文献 340