第1章 C语言程序设计概述 1
1.1 程序设计概述 1
1.1.1 程序与程序设计语言 1
1.1.2 程序设计的一般过程 3
1.1.3 程序设计方法 3
1.2 算法 5
1.2.1 算法的概念 5
1.2.2 算法的组成要素 6
1.2.3 算法的描述 6
1.3 C语言简介 10
1.3.1 C语言出现的历史背景 10
1.3.2 C语言的特点 11
1.3.3 C语言字符集 13
1.3.4 C语言标识符与关键字 13
1.3.5 C语言程序基本结构 14
1.4 C语言编程环境 16
1.4.1 Turbo C 2.0编程环境 16
1.4.2 Visual C++ 6.0编程环境 18
1.5 本章小结 21
习题一 22
第2章 C语言的基本数据类型与表达式 24
2.1 C语言的基本数据类型 24
2.1.1 数据类型概述 24
2.1.2 整型 25
2.1.3 实型 26
2.1.4 字符型 26
2.2 常量与变量 26
2.2.1 常量与符号常量 27
2.2.2 变量与变量说明 29
2.2.3 变量的初始化与赋值 30
2.3 运算符与表达式 31
2.3.1 算术运算符与算术表达式 31
2.3.2 关系运算符与关系表达式 33
2.3.3 逻辑运算符与逻辑表达式 34
2.3.4 赋值运算符与赋值表达式 36
2.3.5 条件运算符与条件表达式 38
2.3.6 逗号运算符与sizeof运算符 38
2.3.7 运算优先级与结合性 39
2.4 数据类型转换 40
2.4.1 自动类型转换 40
2.4.2 强制类型转换 42
2.5 实例分析 44
2.6 本章小结 45
习题二 46
第3章 顺序结构程序设计 47
3.1 结构化程序设计的基本结构 47
3.1.1 结构化程序设计方法 47
3.1.2 程序的三种基本结构 49
3.2 输入与输出语句 50
3.2.1 格式输出函数(printf函数) 50
3.2.2 格式输入函数(scanf函数) 56
3.2.3 字符输出函数(putchar函数) 59
3.2.4 字符输入函数(getchar函数) 60
3.3 实例分析 60
3.4 本章小结 61
习题三 62
第4章 选择结构程序设计 63
4.1 if语句 63
4.2 if…else语句 64
4.3 if…else if语句 64
4.4 if语句的嵌套 66
4.5 switch语句 68
4.6 实例分析 69
4.7 本章小结 70
习题四 70
第5章 循环结构程序设计 73
5.1 while语句 73
5.2 do…while语句 74
5.3 for语句 76
5.4 循环的嵌套 78
5.5 break语句、continue语句与goto语句 78
5.5.1 break语句 78
5.5.2 continue语句 79
5.5.3 goto语句 80
5.6 实例分析 80
5.7 本章小结 82
习题五 82
第6章 函数 85
6.1 函数概述 85
6.2 函数定义与函数调用 87
6.2.1 函数定义 87
6.2.2 函数调用 89
6.2.3 函数声明 90
6.3 函数的参数传递 91
6.4 函数的嵌套调用与递归调用 92
6.4.1 函数的嵌套调用 92
6.4.2 函数的递归调用 93
6.5 变量的作用域 96
6.6 变量的存储属性 99
6.6.1 自动变量(auto) 99
6.6.2 寄存器变量(register) 99
6.6.3 外部变量(extern) 100
6.6.4 静态变量(static) 100
6.7 实例分析 101
6.8 本章小结 102
习题六 102
第7章 编译预处理 105
7.1 宏定义 105
7.1.1 不带参数的宏定义 105
7.1.2 带参数的宏定义 107
7.2 文件包含命令 108
7.2.1 #include命令格式 108
7.2.2 #include命令的多次调用及嵌套使用 109
7.3 条件编译命令 109
7.3.1 #ifdef 109
7.3.2 #ifndef 110
7.3.3 #if 110
7.4 实例分析 111
7.5 本章小结 115
习题七 115
第8章 数组 118
8.1 一维数组 118
8.1.1 一维数组的定义 118
8.1.2 一维数组元素的引用 119
8.1.3 一维数组的初始化 120
8.1.4 应用举例 121
8.2 二维数组与多维数组 124
8.2.1 二维数组的定义 125
8.2.2 二维数组元素的引用 125
8.2.3 二维数组的初始化 126
8.2.4 多维数组 127
8.2.5 应用举例 128
8.3 字符数组与字符串 128
8.3.1 字符数组的定义与初始化 128
8.3.2 字符串与字符数组 129
8.3.3 字符数组的输入与输出 130
8.3.4 字符串处理函数 131
8.4 数组作为函数参数 132
8.4.1 数组元素作函数的参数 132
8.4.2 数组名作函数的参数 133
8.5 实例分析 135
8.6 本章小结 139
习题八 140
第9章 指针 142
9.1 指针的概念 142
9.2 指针变量 144
9.2.1 指针变量的定义 144
9.2.2 指针变量的运算 146
9.3 指针与数组 147
9.3.1 指针与一维数组 148
9.3.2 指针与二维数组 149
9.3.3 指针数组 153
9.4 指针与字符串 154
9.4.1 字符指针与字符数组 154
9.4.2 字符指针数组 156
9.5 指针与函数 158
9.5.1 指针作为函数形式参数 158
9.5.2 返回指针的函数 161
9.5.3 指向函数的指针 162
9.6 指向指针的指针 165
9.7 带参数的main函数 167
9.8 实例分析 169
9.9 本章小结 171
习题九 172
第10章 结构体、共用体、枚举及类型定义 177
10.1 结构体类型变量 177
10.1.1 结构体类型说明和结构体类型变量的定义 178
10.1.2 结构体类型变量的引用 180
10.1.3 结构体类型变量的初始化 181
10.2 结构体与数组 182
10.2.1 结构体数组的定义 182
10.2.2 结构体数组的初始化与结构体数组元素的引用 183
10.3 结构体与指针 185
10.3.1 指向结构体变量的指针 185
10.3.2 指向结构体数组的指针 186
10.4 结构体与函数 187
10.4.1 结构体变量作为函数的参数 187
10.4.2 用指向结构体变量的指针作为函数的参数 188
10.4.3 返回结构体类型值的函数 190
10.5 链表 190
10.5.1 链表的概念 190
10.5.2 动态存储分配函数 191
10.5.3 链表的基本操作 193
10.6 共用体 200
10.6.1 共用体类型变量的定义 200
10.6.2 共用体类型变量的引用 201
10.7 枚举类型 203
10.8 自定义数据类型(typedef) 205
10.9 实例分析 207
10.10 本章小结 212
习题十 213
第11章 文件 217
11.1 文件的概述 217
11.1.1 数据文件 217
11.1.2 文件的存取方式 218
11.1.3 流式文件与文件缓冲区 219
11.1.4 文件指针类型(FILE) 219
11.1.5 文件的操作 220
11.2 文件的打开与关闭 221
11.2.1 fopen函数 221
11.2.2 fclose函数 223
11.3 文件的顺序读写 224
11.3.1 单个字符的读写 224
11.3.2 输入和输出一个字符串 226
11.3.3 格式化的输入与输出 227
11.3.4 按“记录”的方式输入和输出 229
11.4 文件的定位与文件的随机读写 231
11.4.1 fseek函数 231
11.4.2 ftell函数 233
11.5 文件操作的出错检测 234
11.5.1 ferror函数 234
11.5.2 clearerr函数 235
11.5.3 feof函数 235
11.6 实例分析 235
11.7 本章小结 237
习题十一 237
第12章 位运算 242
12.1 位运算概述 242
12.2 位运算符与位运算 242
12.2.1 “按位与”运算 243
12.2.2 “按位或”运算 244
12.2.3 “按位异或”运算 244
12.2.4 “按位取反”运算 245
12.2.5 “左移”运算 246
12.2.6 “右移”运算 246
12.2.7 位运算赋值运算符 247
12.3 位运算应用 247
12.4 位段 249
12.5 实例分析 251
12.6 本章小结 252
习题十二 252
参考文献 255
附录Ⅰ 关键字 256
附录Ⅱ 常用字符与ASCII代码对照表 257
附录Ⅲ 运算符的优先级和结合性 258
附录Ⅳ 常用的C库函数 259