第1章 程序设计基础 1
1.1 程序设计初步 1
1.2 算法及表示 3
1.2.1 算法的特性 3
1.2.2 算法的表示 3
1.3 程序设计及结构化程序设计方法 7
1.3.1 程序设计 7
1.3.2 结构化程序设计 9
1.4 C语言程序的构成 11
1.5 程序的书写格式 13
第2章 数据类型、运算符和表达式 14
2.1 C语言数据类型简介 14
2.2 标识符 14
2.2.1 字符集 14
2.2.2 标识符的命名 15
2.2.3 标识符的分类 15
2.3 常量 16
2.3.1 数值常量 16
2.3.2 字符常量和字符串常量 17
2.3.3 符号常量 19
2.4 变量 19
2.4.1 整型变量 19
2.4.2 实型变量 21
2.4.3 字符变量 22
2.5 数据间的混合运算 23
2.6 变量赋初值 23
2.7 运算符和表达式 24
2.7.1 C语言运算符简介 24
2.7.2 C语言表达式的类型 25
2.7.3 表达式的求值规则 25
2.7.4 算术运算符和算术表达式 25
2.7.5 赋值运算符和赋值表达式 28
2.7.6 逗号运算符和逗号表达式 30
2.7.7 关系运算符和关系表达式 31
2.7.8 逻辑运算符和逻辑表达式 32
2.7.9 条件运算符和条件表达式 34
2.8 应用举例 35
第3章 顺序结构程序设计 39
3.1 C语句概述 39
3.2 赋值语句 41
3.3 数据的输入和输出 42
3.3.1 putchar函数和getchar函数 42
3.3.2 printf函数和scanf函数 44
3.4 应用举例 55
第4章 选择结构程序设计 58
4.1 if语句 58
4.2 if语句的嵌套 63
4.3 多分支结构 67
4.4 应用举例 70
第5章 循环结构程序设计 79
5.1 goto语句及用goto语句构成的循环 79
5.2 while语句 80
5.3 do...while语句 83
5.4 for语句 85
5.5 几种循环的比较 90
5.6 循环嵌套 90
5.7 break语句 93
5.8 continue语句 93
5.9 应用举例 94
第6章 数组 105
6.1 数组和数组元素 105
6.2 一维数组 106
6.2.1 一维数组的定义和使用 106
6.2.2 一维数组的初始化 108
6.2.3 一维数组程序举例 109
6.3 多维数组 119
6.3.1 二维数组的定义和引用 119
6.3.2 二维数组的初始化 121
6.3.3 二维数组程序举例 122
6.4 字符数组 125
6.4.1 字符数组的定义和使用 125
6.4.2 字符数组的初始化 126
6.4.3 字符串的输入和输出 126
6.4.4 用于字符处理的库函数 128
6.4.5 程序举例 130
6.5 应用举例 134
第7章 函数 137
7.1 概述 137
7.2 函数定义的一般形式 138
7.2.1 无参函数的定义 138
7.2.2 有参函数的定义 139
7.2.3 空函数的定义 139
7.3 函数参数和函数的值 140
7.3.1 形式参数和实际参数 140
7.3.2 函数的返回值 141
7.4 函数的调用 142
7.4.1 函数调用的形式 142
7.4.2 函数调用的方式 142
7.4.3 对被调用函数的声明和函数原型 143
7.4.4 程序举例 144
7.5 函数的嵌套调用 146
7.6 函数的递归调用 147
7.7 局部变量和全局变量 149
7.7.1 局部变量 149
7.7.2 全局变量 150
7.8 动态存储变量和静态存储变量 152
7.8.1 变量的存储类别 152
7.8.2 局部变量的存储方式 153
7.8.3 全局变量的存储方式 155
7.8.4 存储类别小结 156
7.9 内部函数和外部函数 157
7.9.1 内部函数 157
7.9.2 外部函数 157
7.10 应用举例 157
第8章 编译预处理 161
8.1 宏定义 161
8.1.1 不带参数的宏定义 161
8.1.2 带参数的宏定义 162
8.2 “文件包含”处理 164
8.3 条件编译 166
8.4 应用举例 167
第9章 指针 170
9.1 地址和指针的概念 170
9.2 变量的指针和指向变量的指针变量 171
9.2.1 指针变量的定义 172
9.2.2 指针变量的引用 173
9.2.3 用指针变量作为函数参数 174
9.3 数组的指针和指向数组的指针变量 177
9.3.1 指向数组元素的指针 177
9.3.2 通过指针引用数组元素 177
9.3.3 用数组名作为函数参数 181
9.3.4 指向多维数组的指针和指针变量 187
9.4 字符串的指针和指向字符串的指针变量 192
9.4.1 字符串的表示形式 192
9.4.2 对使用字符指针变量与字符数组的讨论 193
9.4.3 用字符串指针作为函数参数 195
9.5 函数的指针和指向函数的指针变量 198
9.5.1 用函数指针变量调用函数 198
9.5.2 用指向函数的指针变量作为函数参数 199
9.6 返回指针值的函数 199
9.7 指针数组和指向指针的指针 200
9.7.1 指针数组的概念 200
9.7.2 指向指针的指针 201
9.7.3 main函数的命令行参数 202
9.8 应用举例 203
第10章 结构体与共用体 210
10.1 概述 210
10.2 定义结构体类型变量的方法 211
10.3 结构体变量的引用 213
10.4 结构体变量的初始化 214
10.5 结构体数组 214
10.5.1 定义结构体数组 214
10.5.2 结构体数组的初始化 215
10.5.3 结构体数组应用举例 215
10.6 指向结构体类型数据的指针 217
10.6.1 指向结构体变量的指针 217
10.6.2 指向结构体数组的指针 218
10.6.3 用结构体变量和指向结构体的指针作为函数参数 219
10.7 用指针处理链表 221
10.7.1 链表概述 221
10.7.2 处理动态链表所需的函数 222
10.7.3 链表的建立、输出、插入和删除 223
10.8 共用体 230
10.8.1 共用体的概念 230
10.8.2 共用体变量的引用方式 231
10.8.3 共用体类型数据的特点 231
10.9 枚举类型 232
10.10 用typedef定义类型 234
10.11 应用举例 236
第11章 位运算 242
11.1 位运算符与位运算 242
11.1.1 按位与运算符 242
11.1.2 按位或运算符 243
11.1.3 按位异或运算符 243
11.1.4 按位取反运算符 244
11.1.5 左移运算符 245
11.1.6 右移运算符 245
11.1.7 位运算赋值运算符 246
11.1.8 不同长度的数据进行位运算 246
11.2 位段 247
11.3 应用举例 249
第12章 文件 251
12.1 文件的概念 251
12.2 文件操作函数 252
12.2.1 文件的打开 252
12.2.2 文件的关闭 254
12.3 常用的读写函数 254
12.3.1 读写字符函数 254
12.3.2 读写字符串函数 256
12.3.3 读写数据块函数 257
12.3.4 格式化读写函数fprintf函数和fscanf函数 260
12.4 文件的定位 260
12.4.1 rewind函数 261
12.4.2 随机读写和fseek函数 261
12.4.3 ftell函数 262
12.5 ferror函数 262
12.6 clearerr函数 263
12.7 应用举例 263
参考文献 267
附录A 常用ASCII表 268
附录B 运算符和结合性 269
附录C C语言常用语法提要 270
附录D C库函数 274