第1章 C语言概述 1
1.1 程序与语言 1
1.1.1 程序设计与程序设计语言 1
1.1.2 C语言的发展历史 2
1.2 一个简单的C语言程序 3
1.3 算法和程序 4
1.3.1 算法的概念 4
1.3.2 算法的表示方法 5
1.3.3 结构化程序设计 6
1.4 使用Visual C++2010学习版开发C语言程序步骤 8
习题1 13
第2章 数据类型与表达式 14
2.1 C语言的基本要素 14
2.1.1 字符集 14
2.1.2 标识符 14
2.1.3 关键字 14
2.2 数据 15
2.2.1 常量 15
2.2.2 变量 15
2.3 C语言基本数据类型 16
2.3.1 数据分类的理由 16
2.3.2 数据类型概述 16
2.3.3 整型数据 16
2.3.4 实型数据 17
2.3.5 字符数据 18
2.4 运算符与表达式 18
2.4.1 算术运算符与算术表达式 18
2.4.2 赋值运算符与赋值表达式 19
2.4.3 关系运算符与关系表达式 20
2.4.4 逻辑运算符与逻辑表达式 21
2.4.5 条件运算符与条件表达式 22
2.4.6 逗号运算符与逗号表达式 22
2.4.7 运算符的优先级和结合法则 23
2.5 数据类型转换 23
2.5.1 自动类型转换 23
2.5.2 赋值类型转换 23
2.5.3 强制类型转换 24
习题2 24
第3章 顺序结构程序设计 26
3.1 C语句的分类 26
3.2 数据的输入和输出 28
3.2.1 字符的输入和输出 28
3.2.2 格式化输入/输出 30
3.3 顺序结构程序设计举例 37
3.4 常见错误及改正方法 41
习题3 42
第4章 选择结构程序设计 46
4.1 if语句 47
4.1.1 单分支if语句 47
4.1.2 双分支if语句 49
4.1.3 多分支选择结构 52
4.1.4 if语句的嵌套 55
4.2 switch语句 59
4.3 选择结构程序设计举例 62
4.4 常见错误及改正方法 67
习题4 68
第5章 循环结构程序设计 71
5.1 while语句 72
5.2 do-while语句 75
5.3 for语句 76
5.4 循环结构的嵌套 79
5.5 控制转移语句 82
5.5.1 break语句 82
5.5.2 continue语句 85
5.5.3 goto语句 87
5.6 循环结构程序设计举例 87
5.7 常见错误及改正方法 92
习题5 93
第6章 函数 98
6.1 功能模块与函数 98
6.2 函数的定义与调用 100
6.2.1 函数的定义 100
6.2.2 函数的声明 101
6.2.3 函数的调用 103
6.2.4 参数的传递 104
6.3 函数的嵌套调用与递归调用 106
6.3.1 函数的嵌套调用 106
6.3.2 函数的递归调用 108
6.4 变量的作用域与存储类型 110
6.4.1 变量的作用域 110
6.4.2 变量的存储类型 112
6.5 预处理指令 116
6.5.1 文件包含 117
6.5.2 宏定义 118
6.5.3 条件编译 120
6.6 函数设计举例 121
6.7 常见错误原因分析 130
习题6 130
第7章 数组与字符串 135
7.1 一维数组 135
7.1.1 一维数组的定义 135
7.1.2 一维数组元素的引用 136
7.1.3 一维数组的初始化 136
7.1.4 一维数组的应用 137
7.2 二维数组 139
7.2.1 二维数组的定义 139
7.2.2 二维数组元素的引用 139
7.2.3 二维数组的初始化 140
7.2.4 二维数组的应用 140
7.3 字符数组和字符串 142
7.3.1 字符数组的定义与初始化 142
7.3.2 字符串及其存储结构 143
7.3.3 字符串处理函数 143
7.4 数组作为函数的参数 145
7.4.1 用数组元素作函数实参 145
7.4.2 用数组名作函数参数 146
7.4.3 用二维数组名作函数参数 147
7.5 数组程序举例 147
7.6 常见错误及改正方法 150
习题7 151
第8章 指针 155
8.1 指针的概念 155
8.2 指针变量 157
8.2.1 指针变量的定义和初始化 157
8.2.2 指针运算符(&和*) 157
8.2.3 指针变量的赋值 158
8.3 指针的运算 159
8.4 指针与数组 160
8.4.1 指针与一维数组 161
8.4.2 指针与二维数组 164
8.4.3 指针数组 166
8.5 指针与字符串 167
8.6 指针与函数 170
8.6.1 指针作为函数实参 170
8.6.2 数组名作为函数实参,指针作为形参 172
8.6.3 指向字符的指针作为函数的返回值 174
8.6.4 返回指针值的函数 176
8.6.5 指向函数的指针 177
8.7 二级指针 179
8.8 main函数中的参数 181
8.9 动态分配存储 181
8.10 常见错误及纠正方法 186
习题8 187
第9章 结构体和共用体 194
9.1 结构体类型概述 194
9.1.1 结构体类型定义 194
9.1.2 用typedef定义结构体类型 195
9.2 结构体类型变量的定义和引用 196
9.2.1 结构体类型变量的定义 196
9.2.2 结构体类型变量的初始化 198
9.2.3 结构体类型变量的引用 199
9.3 结构体数组 200
9.3.1 结构体数组的定义 201
9.3.2 结构体数组的初始化 201
9.3.3 结构体数组的应用 202
9.4 结构体与指针 204
9.4.1 结构体指针变量的定义 204
9.4.2 结构体指针变量的赋值 205
9.4.3 结构体指针变量的使用 205
9.4.4 指向结构体数组的指针 206
9.4.5 结构体指针数组 208
9.5 结构体与函数 208
9.5.1 结构体变量的成员作为函数的参数 209
9.5.2 结构体变量作为函数的参数 209
9.5.3 结构体变量的指针作为函数的参数 210
9.5.4 函数的返回值为结构体类型和结构体指针类型 211
9.6 链表的基本操作 212
9.6.1 链表概述 212
9.6.2 动态链表的建立 213
9.6.3 在链表中删除节点 215
9.6.4 在链表中插入节点 217
9.6.5 链表中节点的排序 218
9.7 共用体类型数据的定义和引用 219
9.7.1 共用体的定义 219
9.7.2 共用体类型变量的引用 220
9.8 枚举类型数据的定义和引用 222
9.9 位运算和位段 223
9.9.1 位运算 224
9.9.2 位段 226
9.10 自定义类型(typedef) 227
9.11 常见错误及改正方法 229
习题9 230
第10章 文件的输入和输出 235
10.1 文件的概述 235
10.1.1 文件的基本概念 235
10.1.2 文件系统 236
10.1.3 文件的编码方式 236
10.1.4 文件指针 237
10.2 文件的打开与关闭 237
10.2.1 文件的打开(fopen函数) 238
10.2.2 文件的使用方式 238
10.2.3 文件的关闭(fclose函数) 239
10.3 文件的顺序读取 240
10.3.1 字符的读写函数(fgetc和fputc) 240
10.3.2 字符串的读写函数(fgets和fputs) 242
10.3.3 格式化的读写函数(fscanf和fprintf) 243
10.3.4 数据块的读写函数(fread和fwrite) 243
10.4 文件的定位与随机读写 244
10.4.1 文件定位函数 245
10.4.2 文件的随机读写操作 245
10.5 文件的出错检测 246
10.6 常见文件操作错误及改正方法 247
习题10 247
附录 250
附录A C语言中的关键字 250
附录B 常用ASCII码对照表 250
附录C 运算符的优先级和结合性 251
附录D 常用ANSI C标准函数库 251
参考文献 258