第1章 C语言程序设计概述 1
1.1 程序设计在计算机应用中的地位和作用 2
1.2 程序设计必备的基础知识——二进制基础 3
1.2.1 进位计数制 4
1.2.2 二进制 4
1.2.3 十六进制和八进制 5
1.2.4 计算机中的编码 5
1.2.5 数据的存储形式 7
1.3 程序设计语言 7
1.3.1 概述 7
1.3.2 程序设计语言的发展与分类 8
1.4 C语言的特点 9
1.5 Turbo C 2.0集成开发环境 11
1.6 一个简单的C语言程序 18
本章小结 19
习题 20
第2章 顺序结构程序设计 21
2.1 算法 21
2.1.1 算法的特征 21
2.1.2 算法的直观描述 22
2.2 数据 24
2.2.1 基本数据类型 24
2.2.2 常量和变量 25
2.2.3 数据的运算 28
2.3 基本语句 33
2.4 基本输入/输出函数 34
2.4.1 字符数据的输入/输出 35
2.4.2 格式输入与格式输出 36
2.5 顺序结构程序设计 41
2.6 典型顺序结构程序举例 42
本章小结 44
习题 45
第3章 分支结构程序设计 47
3.1 if语句 48
3.1.1 提出问题 48
3.1.2 if语句的基本结构 48
3.1.3 关系表达式和逻辑表达式 49
3.1.4 条件运算和条件表达式 54
3.1.5 if的嵌套 56
3.2 switch语句 62
3.2.1 提出问题 62
3.2.2 switch的一般形式 62
3.3 典型程序举例 66
本章小结 68
习题 68
第4章 循环结构程序设计 70
4.1 提出问题 71
4.2 while语句 72
4.3 do-while语句 75
4.4 for语句 79
4.5 循环的嵌套 83
4.6 break语句和continue语句 86
4.6.1 break语句 87
4.6.2 continue语句 89
4.7 while、do-while和for三种循环的比较 91
4.8 典型程序举例 93
本章小结 98
习题 98
第5章 数组与字符串 100
5.1 提出问题 101
5.2 一维数组 102
5.2.1 一维数组的定义 102
5.2.2 一维数组元素的引用 102
5.2.3 一维数组的初始化 104
5.2.4 一维数组的输入/输出 105
5.2.5 一维数组应用举例 105
5.3 二维数组 112
5.3.1 二维数组的定义 112
5.3.2 二维数组的引用 113
5.3.3 二维数组的存储 114
5.3.4 二维数组的输入/输出 114
5.3.5 二维数组的初始化 115
5.3.6 二维数组应用举例 115
5.4 字符串处理 118
5.4.1 字符数组的定义和引用 119
5.4.2 字符数组的初始化 120
5.4.3 字符数组的输入/输出 120
5.4.4 字符串处理的标准函数 123
5.4.5 字符数组应用举例 128
本章小结 131
习题 131
第6章 函数 134
6.1 概述 135
6.1.1 自定义函数在C语言程序设计中的作用 135
6.1.2 C语言程序各函数之间的关系 135
6.1.3 C函数的分类 136
6.2 函数定义的一般形式 137
6.2.1 有参函数定义的一般形式 137
6.2.2 无参函数定义的一般形式 138
6.2.3 空函数定义的一般形式 138
6.3 函数参数和函数返回值 139
6.3.1 形式参数和实际参数 139
6.3.2 函数的返回值 141
6.4 函数的调用 142
6.4.1 函数调用的一般形式 142
6.4.2 调用过程 143
6.4.3 对被调函数的声明 144
6.5 数组作为函数的参数 148
6.6 函数的嵌套调用 154
6.7 函数的递归调用 156
6.8 外部变量与内部变量 159
6.8.1 外部变量的定义 160
6.8.2 外部变量的作用范围 160
6.8.3 外部变量的使用说明 162
6.9 静态变量与自动变量 164
6.9.1 静态存储方式与动态存储方式 165
6.9.2 静态变量的声明 165
6.9.3 静态变量的使用说明 165
6.10 变量的存储类别 167
6.10.1 auto类型 168
6.10.2 register类型 168
6.10.3 static类型 168
6.10.4 exturn类型 169
6.11 内部函数与外部函数 171
6.11.1 内部函数 171
6.11.2 外部函数 172
6.12 多文件程序的编译与连接 174
6.12.1 利用项目文件实现 174
6.12.2 利用文件包含命令实现 175
本章小结 176
习题 176
第7章 编译预处理 178
7.1 宏定义 179
7.1.1 无参宏定义 179
7.1.2 带参宏定义 182
7.2 文件包含 185
7.3 条件编译 186
本章小结 188
习题 188
第8章 指针 190
8.1 指针与指针变量的概念 191
8.2 指针变量的定义与引用 193
8.2.1 指针变量的定义与相关运算 193
8.2.2 指针变量作函数参数 196
8.3 数组的指针和指向数组的指针变量 198
8.3.1 概述 198
8.3.2 通过指针引用数组元素 198
8.3.3 指向数组的指针作函数的参数 200
8.3.4 二维数组的指针及其指针变量 201
8.3.5 动态数组的实现 203
8.4 字符串的指针和指向字符串的指针变量 207
8.4.1 字符串的表示与引用 207
8.4.2 字符串指针作函数的参数 209
8.5 返回指针值的函数 210
8.6 指针数组与主函数main()的形参 211
8.6.1 指针数组 211
8.6.2 主函数main()的形参 213
8.6.3 指向指针的指针变量 214
8.7 函数的指针和指向函数的指针 215
本章小结 216
习题 216
第9章 结构体与共用体 218
9.1 结构体类型与结构体变量的定义 219
9.1.1 结构体类型定义 219
9.1.2 结构体变量定义 221
9.2 结构体变量的引用与初始化 222
9.2.1 结构体变量的引用规则 222
9.2.2 结构体变量的初始化 223
9.3 结构体数组 223
9.4 指向结构体类型数据的指针 224
9.4.1 指向结构体变量的指针 224
9.4.2 指向结构数组的指针 226
9.4.3 指向结构数据的指针作函数的参数 226
9.5 用typedef定义已有类型的别名 227
9.6 链表处理——结构指针的应用 230
9.6.1 概述 230
9.6.2 创建一个新链表 232
9.6.3 对链表的插入操作 233
9.6.4 对链表的删除操作 234
9.7 共用体和枚举类型 235
9.7.1 共用体 235
9.7.2 枚举类型 237
本章小结 238
习题 238
第10章 文件 240
10.1 文件的概念 240
10.2 文件指针 241
10.2.1 文件缓冲区 242
10.2.2 文件指针的定义 242
10.3 文件打开和关闭函数 242
10.3.1 文件的打开函数fopen() 243
10.3.2 文件的关闭函数fclose() 244
10.4 常用文件操作函数 245
10.4.1 字符读/写函数fgetc()和fputc() 245
10.4.2 字符串读/写函数fgets()和fputs() 248
10.4.3 数据块读/写函数fread()和fwrite() 250
10.4.4 格式化读/写函数fscanf()和fprintf() 252
10.4.5 文件的随机读/写 253
10.5 文件检测函数 255
本章小结 256
习题 257
第11章 位运算 258
11.1 位运算符和位运算 258
11.1.1 按位与(&) 259
11.1.2 按位或(|) 261
11.1.3 按位取反(~) 261
11.1.4 按位异或(∧) 262
11.1.5 左移位(<<) 262
11.1.6 右移位(>>) 263
11.1.7 位复合赋值运算符 263
11.2 位运算应用 263
11.3 位段 265
11.3.1 位段结构类型的定义 265
11.3.2 位段变量的定义和引用 266
11.3.3 位段的说明 267
本章小结 267
习题 268
第12章 综合实训 269
12.1 基本要求 269
12.2 程序示例 270
本章小结 273
附录 274
附录A C语言中的关键字 274
附录B 常用字符与ASCⅡ码对照表 274
附录C C语言运算符的优先级及其结合性 275
附录D 输入/输出函数的格式控制符 276
附录E 常用库函数 277
附录F Turbo C常见错误信息 284
参考文献 295