第1章 C语言概述 1
1.1 C语言的发展及特点 1
1.1.1 C语言的发展 1
目录 1
1.1.2 C语言的特点 2
1.2 C语言程序的格式、构成及其基本要求 3
1.2.1 C语言程序的格式 4
1.2.2 C语言程序的构成 4
1.2.3 C语言程序的基本要求 6
1.3 C语言程序上机调试步骤和方法 6
1.4 算法 9
1.4.1 算法的概念 9
1.4.2 算法的特性 9
1.4.4 结构化程序设计 10
1.4.3 算法的表示方法 10
1.5 小结 12
1.6 习题 13
第2章 C语言程序设计的初步知识 15
2.1 C语言的数据类型 15
2.2 常量、变量和标识符 16
2.2.1 标识符 16
2.2.2 常量 17
2.2.3 变量 18
2.3 整型数据 20
2.3.1 整型常量 20
2.3.2 整型变量 21
2.4.1 实型常量 23
2.4.2 实型变量 23
2.4 实型数据 23
2.5 字符型数据 24
2.5.1 字符常量 24
2.5.2 字符变量 25
2.5.3 字符串常量 27
2.6 算术运算符和算术表达式 28
2.6.1 基本的算术运算符和算术表达式 28
2.6.2 算术运算符的优先级、结合性 29
2.7 赋值运算符和赋值表达式 29
2.7.1 基本赋值运算符 29
2.7.2 复合赋值运算符 29
2.7.3 赋值表达式 30
2.8 逗号运算符和逗号表达式 31
2.9.2 自减运算符 32
2.9.1 自增运算符 32
2.9 自增运算符、自减运算符及C语言运算符的优先级 32
2.9.3 C语言运算符的优先级与结合性 33
2.10 不同类型数据间的混合运算 34
2.11 典型例题解析 35
2.12 小结 37
2.13 习题 38
第3章 顺序结构程序设计 41
3.1 C语句 41
3.2 数据的输出 43
3.2.1 字符输出函数(putchar函数) 43
3.2.2 格式输出函数(printf函数) 43
3.3 数据的输入 47
3.3.1 字符输入函数(getchar函数) 47
3.3.2 格式输入函数(scanf函数) 47
3.4 小型案例实训 49
3.5 小结 51
3.6 习题 52
第4章 选择结构程序设计 55
4.1 关系运算符和关系表达式 55
4.1.1 关系运算符及其优先级 55
4.1.2 关系表达式 56
4.2 逻辑运算符和逻辑表达式 57
4.2.1 逻辑运算符及其优先级次序 57
4.2.2 逻辑表达式 58
4.3 条件运算符和条件表达式 59
4.4 if语句 60
4.4.1 if语句的三种形式 60
4.4.2 if语句的嵌套 63
4.5.1 switch语句 65
4.5 switch语句 65
4.5.2 break语句 66
4.6 程序举例 67
4.7 小型案例实训 70
4.8 小结 73
4.9 习题 74
第5章 循环结构程序设计 78
5.1 while语句 78
5.1.1 while循环的一般格式 78
5.1.2 while循环的执行过程 79
5.2 do-while语句 80
5.2.1 do-while循环的一般格式 80
5.2.2 do-while循环的执行过程 81
5.3 for语句 82
5.3.2 for循环的执行过程 83
5.3.1 for循环的一般格式 83
5.4 break语句和continue语句在循环体中的作用 85
5.4.1 break语句在循环体中的作用 85
5.4.2 continue语句在循环体中的作用 85
5.5 语句标号和goto语句 86
5.5.1 语句标号 86
5.5.2 goto语句 87
5.6 循环结构的嵌套 87
5.7 小型案例实训 89
5.8 小结 91
5.9 习题 92
第6章 数组 97
6.1 一维数组 97
6.1.1 一维数组的定义 97
6.1.2 一维数组元素的引用 98
6.1.3 一维数组的初始化 99
6.1.4 一维数组的应用 99
6.2 二维数组 101
6.2.1 二维数组的定义 101
6.2.2 二维数组元素的引用 102
6.2.3 二维数组的初始化 102
6.2.4 二维数组的应用 104
6.3 字符数组 106
6.3.1 字符数组的定义及初始化 106
6.3.2 字符数组的引用 107
6.3.3 字符串处理函数 108
6.3.4 字符串数组 112
6.4 小型案例实训 113
6.5 小结 115
6.6 习题 116
第7章 函数 120
7.1 函数的概念 120
7.1.1 库函数的使用 120
7.1.2 函数的定义 122
7.2 函数的参数和返回值 124
7.2.1 函数的参数 124
7.2.2 函数的返回值 125
7.2.3 函数的声明 126
7.3 函数的参数传递方式 128
7.3.1 普通变量作为函数参数 128
7.3.2 数组作为函数参数 128
7.4.1 函数的一般调用 130
7.4 函数的调用 130
7.4.2 函数的嵌套调用 131
7.4.3 函数的递归调用 132
7.5 变量的作用域和存储类型 135
7.5.1 变量的作用域 135
7.5.2 变量的存储类型 136
7.6 函数的作用范围 141
7.6.1 内部函数 142
7.6.2 外部函数 142
7.7 小型案例实训 144
7.8 小结 145
7.9 习题 147
第8章 编译预处理 151
8.1 宏定义 151
8.1.1 无参宏 151
8.1.2 带参宏 153
8.1.3 终止宏定义 155
8.2 文件包含命令 155
8.3 条件编译 157
8.4 小型案例实训 160
8.5 小结 162
8.6 习题 163
第9章 指针 166
9.1 指针的概述 166
9.2 指针变量 167
9.2.1 指针变量的定义 167
9.2.2 指针变量的引用 168
9.2.3 指针变量的运算 171
9.3.1 指针与一维数组 172
9.3 指针与数组 172
9.3.2 指针与二维数组 175
9.3.3 指向行指针的指针变量 177
9.4 指针与字符串 178
9.5 指针数组 181
9.6 指针与函数 182
9.6.1 指针变量作为函数的参数 182
9.6.2 数组名作为函数参数 183
9.6.3 函数的返回值为指针 185
9.6.4 指向函数的指针 186
9.6.5 指向函数的指针作为函数参数 188
9.7 指向指针的指针 189
9.8 main()函数的形参和void指针 192
9.8.1 指针数组作为main函数的形参 192
9.8.2 指向void的指针变量 193
9.8.3 动态存储分配 194
9.9 典型例题分析 196
9.10 小型案例实训 199
9.11 小结 201
9.12 习题 203
第10章 构造数据类型 210
10.1 结构体 210
10.1.1 结构体定义 210
10.1.2 结构体变量 212
10.1.3 结构体变量的使用 213
10.2 结构体与函数 218
10.2.1 结构变量与数组结构作函数参数 218
10.2.2 结构变量作为函数的返回值 220
10.3.1 结构体变量指针 221
10.3 结构体与指针 221
10.3.2 结构体数组指针 222
10.4 链表 224
10.4.1 链表概述 224
10.4.2 链表的基本操作 225
10.5 共用体 230
10.6 枚举类型 232
10.7 typedef类型声明 234
10.8 小型案例实训 235
10.9 小结 241
10.10 习题 243
第11章 文件 249
11.1 文件概述 249
11.2 文件类型指针 250
11.3.1 文件的打开 251
11.3 文件的基本操作 251
11.3.2 文件的关闭 252
11.3.3 文件读函数 253
11.3.4 文件的写函数 256
11.4 文件的定位函数 261
11.5 文件出错检测函数 264
11.6 文件综合实例 265
11.7 小型案例实训 268
11.8 小结 274
11.9 习题 275
第12章 位运算 280
12.1 位的运算 280
12.2 位段 286
12.3 小型案例实训 287
12.4 小结 290
12.5 习题 291
第13章 项目实践 293
13.1 软件开发过程 293
13.1.1 可行性和需求分析 293
13.1.2 系统设计 294
13.1.3 软件编码 298
13.1.4 软件测试 302
13.1.5 小结 302
13.2 旅店管理系统 303
13.2.1 需求分析 303
13.2.2 系统设计 303
13.2.3 程序代码 306
13.2.4 软件测试 333
附录 各章习题参考答案 335
参考文献 355