第1章 C语言程序设计概述 1
1.1 程序设计的基本概念 1
1.1.1 程序和程序设计 1
1.1.2 程序设计语言与程序设计方法 3
1.2 C语言的产生、发展及标准化 5
1.3 C语言的体系结构及特征 6
1.3.1 C语言的体系结构 6
1.3.2 C语言的语言特征 7
1.4 C语言程序的基本组成 9
1.5 算法及其表示 11
1.5.1 算法的基本概念 11
1.5.2 算法的特性及组成要素 14
1.5.3 算法的描述及实现 15
1.6 学习C语言程序设计的方法 18
习题一 20
第2章 C语言程序的语法基础 21
2.1 C语言的字符集和标识符 21
2.1.1 字符集 21
2.1.2 标识符、关键字及分隔符 21
2.2 C语言的基本数据类型 23
2.2.1 数据类型的分类 23
2.2.2 基本数据类型的名字及长度 24
2.3 常量与变量 26
2.3.1 整型常量和整型变量 29
2.3.2 实型常量和实型变量 31
2.3.3 字符常量和字符变量 33
2.3.4 字符串常量 36
2.4 算术运算符和算术表达式 36
2.5 赋值运算符和赋值表达式 41
2.6 关系运算符和关系表达式 43
2.7 逻辑运算符和逻辑表达式 45
2.8 条件运算符和条件表达式 47
2.9 逗号运算符和逗号表达式 48
2.10 位运算符和位运算表达式 49
习题二 51
第3章 顺序结构程序设计 54
3.1 C程序的基本语句 54
3.1.1 表达式语句 54
3.1.2 复合语句 55
3.1.3 控制语句 57
3.1.4 函数调用语句 58
3.1.5 空语句 58
3.2 赋值语句 58
3.3 数据的基本输入/输出 59
3.3.1 字符数据的输入/输出 60
3.3.2 格式标准输入/输出 62
3.4 顺序结构程序设计 73
习题三 75
第4章 选择结构程序设计 78
4.1 if语句 78
4.1.1 if语句的三种形式 78
4.1.2 if语句的嵌套 83
4.2 条件运算符和表达式 85
4.3 switch语句 86
4.4 选择结构程序设计举例 90
习题四 94
第5章 循环结构程序设计 97
5.1 while循环语句 97
5.2 for循环语句 99
5.3 do—while循环语句 101
5.4 循环的嵌套 103
5.5 break和continue语句 107
5.6 goto语句与if语句构成的循环 109
5.6.1 goto语句和标号 109
5.6.2 goto语句与if语句构成的循环 109
5.7 循环结构程序设计举例 110
习题五 113
第6章 数组 118
6.1 一维数组 118
6.1.1 一维数组的定义 118
6.1.2 一维数组元素的引用 119
6.1.3 一维数组元素的初始化 120
6.1.4 一维数组应用举例 120
6.2 二维数组 124
6.2.1 二维数组的定义 124
6.2.2 二维数组元素的引用 125
6.2.3 二维数组元素的初始化 125
6.2.4 二维数组应用举例 126
6.3 字符数组和字符串 129
6.3.1 字符数组的定义 129
6.3.2 字符数组的初始化 129
6.3.3 字符数组元素的引用 130
6.3.4 字符串的存储 131
6.3.5 字符数组的输入/输出 131
6.3.6 字符串处理函数 133
6.3.7 字符数组程序设计举例 135
习题六 136
第7章 函数 138
7.1 C程序的一般结构 138
7.1.1 结构化程序设计的概念 138
7.1.2 C程序的一般结构 139
7.2 函数的分类和定义 139
7.2.1 函数的分类 139
7.2.2 函数的定义 140
7.3 函数的调用 143
7.3.1 函数调用的一般形式 143
7.3.2 函数调用的方式 143
7.3.3 函数调用的执行过程 144
7.3.4 被调用函数的声明和函数原型 146
7.4 数组作为函数参数 147
7.4.1 数组元素作函数实参 147
7.4.2 数组名作为函数参数 149
7.5 函数的嵌套与递归调用 154
7.5.1 函数的嵌套调用 154
7.5.2 函数的递归调用 156
7.6 局部变量和全局变量 161
7.6.1 局部变量 161
7.6.2 全局变量 163
7.7 变量的存储类别 164
7.7.1 动态存储方式变量与静态存储方式变量 164
7.7.2 auto变量 164
7.7.3 用static声明局部变量 165
7.7.4 register变量 166
7.7.5 用extern声明外部变量 166
7.8 内部函数和外部函数 168
习题七 169
第8章 指针 173
8.1 指针与地址的概念 173
8.2 指针变量的定义与引用 174
8.2.1 指针变量的定义 174
8.2.2 指针变量的引用及运算 175
8.2.3 指针变量作为函数参数 178
8.3 指针与数组 181
8.3.1 指向一维数组的指针 181
8.3.2 指向二维数组的指针 185
8.4 指针与字符串 188
8.4.1 字符串与指向字符串的指针 188
8.4.2 使用字符串指针变量与字符数组的区别 189
8.5 指向函数的指针 193
8.6 指针型函数 195
8.7 指针数组与指向指针的指针 197
8.7.1 指针数组的概念 197
8.7.2 指向指针的指针 199
8.7.3 main函数的参数 201
习题八 202
第9章 编译预处理 204
9.1 无参宏定义 204
9.2 带参数的宏定义 206
9.3 取消宏定义 208
9.4 文件包含#include 209
9.5 条件编译 211
习题九 214
第10章 结构与联合 217
10.1 结构类型和结构变量 217
10.1.1 结构类型的声明 217
10.1.2 结构变量的定义与初始化 218
10.1.3 结构类型的引用 221
10.2 结构数组 221
10.2.1 结构数组的定义与初始化 221
10.2.2 结构数组元素的引用 222
10.3 指向结构类型数据的指针 224
10.3.1 指向结构类型变量的指针 224
10.3.2 指向结构数组的指针 227
10.3.3 用结构变量和结构指针作为函数参数 229
10.4 用结构指针处理链表 231
10.4.1 静态数据结构和动态数据结构的概念 231
10.4.2 C语言的动态存储分配函数 231
10.4.3 链表的建立和操作 233
10.5 联合和联合数据的引用 243
10.6 枚举类型定义和应用 245
10.7 类型定义typedef 246
习题十 248
第11章 文件 255
11.1 C语言中文件的基本概念 255
11.2 文件类型指针 255
11.3 文件的打开与关闭 256
11.3.1 文件的打开 256
11.3.2 文件的关闭 257
11.4 文件的读/写 258
11.4.1 fputc函数和fgetc函数 258
11.4.2 fread函数和fwrite函数 260
11.4.3 fprintf函数和fscanf函数 263
11.5 文件的定位 263
11.5.1 rewind函数 263
11.5.2 fseek函数和随机读/写 263
11.5.3 ftell函数 264
11.6 文件的错误检测 265
11.6.1 ferror函数 266
11.6.2 cleareer函数 266
习题十一 266
附录 267
附录1 ASCII字符编码表 267
附录2 C标准库函数 268
参考文献 272