第1章 C语言概述 1
1.1 计算机语言与结构化程序设计 1
1.1.1 计算机语言 1
1.1.2 结构化程序设计 3
1.2 C语言的发展历史和特点 5
1.2.1 C语言的发展历史 5
1.2.2 C语言的特点 6
1.3 C语言程序的基本结构和执行过程 7
1.3.1 C语言程序简单实例 7
1.3.2 C语言程序执行过程 13
1.4 C语言的字符集和标识符 13
1.4.1 字符集 13
1.4.2 标识符 14
1.4.3 预定义标识符 15
习题1 16
第2章 数据类型及其表达式 18
2.1 C语言数据类型简介 18
2.2 基本数据类型 19
2.2.1 常量与变量 19
2.2.2 整型数据 19
2.2.3 实型数据 24
2.2.4 字符型数据 27
2.2.5 空类型 31
2.3 运算符与表达式 32
2.3.1 C运算符简介 32
2.3.2 算术运算符和算术表达式 33
2.3.3 关系运算符和关系表达式 36
2.3.4 逻辑运算符和逻辑表达式 37
2.3.5 条件运算符和条件表达式 39
2.3.6 赋值运算符和赋值表达式 41
2.3.7 逗号运算符和逗号表达式 43
2.3.8 位运算符和位运算表达式 44
2.4 不同类型数据间的转换 48
2.4.1 不同类型数据间的隐式转换 48
2.4.2 不同类型数据间的显式转换 49
习题2 50
第3章 顺序结构的程序设计 54
3.1 C语句概述 54
3.2 数据输入/输出的概念及在C语言中的实现 59
3.3 字符数据的输入和输出 60
3.3.1 字符输入函数getchar() 60
3.3.2 字符输出函数putchar() 61
3.4 格式化输入与输出 62
3.4.1 格式化输入函数scanf() 62
3.4.2 格式化输出函数printf() 67
习题3 71
第4章 选择结构的程序设计 75
4.1 条件选择结构 75
4.1.1 if语句的两种形式 75
4.1.2 if语句的嵌套 80
4.2 开关选择结构 85
4.2.1 switch语句形式 85
4.2.2 switch语句的嵌套 90
4.3 选择结构程序设计举例 91
习题4 94
第5章 循环结构的程序设计 98
5.1 穷举与迭代算法 98
5.2 goto语句 100
5.3 while语句 102
5.4 do-while语句 104
5.5 for语句 107
5.6 循环的嵌套 111
5.7 循环结构中的跳转语句 114
5.7.1 break语句 114
5.7.2 continue语句 116
5.8 循环结构程序设计举例 118
习题5 122
第6章 数组 126
6.1 一维数组 127
6.1.1 一维数组的定义 127
6.1.2 一维数组元素的引用 128
6.1.3 一维数组的初始化 130
6.1.4 一维数组应用举例 131
6.2 二维数组 138
6.2.1 二维数组的定义 138
6.2.2 二维数组元素的引用 140
6.2.3 二维数组的初始化 141
6.2.4 二维数组应用举例 143
6.3 字符数组 147
6.3.1 字符数组的定义 147
6.3.2 字符数组的初始化 148
6.3.3 字符数组的引用 151
6.3.4 字符串处理函数 158
6.3.5 字符数组应用举例 162
习题6 163
第7章 结构体、共用体与枚举 169
7.1 结构体 169
7.1.1 结构体类型的定义 169
7.1.2 结构体变量 171
7.1.3 结构体数组 174
7.2 共用体 177
7.2.1 共用体类型的定义 177
7.2.2 共用体变量 178
7.3 枚举类型 180
7.3.1 枚举类型的定义 180
7.3.2 枚举类型变量 181
7.4 类型的重新命名 183
习题7 184
第8章 函数&. 188
8.1 概述 188
8.2 函数的定义 189
8.2.1 无参函数的定义 189
8.2.2 有参函数的定义 190
8.2.3 空函数的定义 191
8.3 函数的参数和函数的返回值 192
8.3.1 形式参数和实际参数 192
8.3.2 函数的返回值 193
8.4 函数的调用 196
8.4.1 函数调用的一般形式 196
8.4.2 函数调用的方式 197
8.4.3 函数的声明 197
8.5 函数的嵌套调用 200
8.6 函数的递归调用 203
8.7 构造类型数据作为函数的参数 208
8.7.1 结构体变量作为函数的参数 208
8.7.2 数组作为函数的参数 210
习题8 215
第9章 变量、函数的属性和编译预处理 220
9.1 变量的存储类型 220
9.1.1 变量的存储类型含义 220
9.1.2 变量的存储类型分类 220
9.2 变量的作用域 222
9.2.1 局部变量及其作用域 222
9.2.2 全局变量及其作用域 226
9.3 内部函数和外部函数 231
9.3.1 内部函数 231
9.3.2 外部函数 232
9.4 编译预处理 233
9.4.1 宏定义 234
9.4.2 文件包含 239
9.4.3 条件编译 243
习题9 245
第10章 指针 249
10.1 指针与指针变量 249
10.1.1 指针的概念 249
10.1.2 指针变量 251
10.1.3 指针运算 257
10.2 指针变量与数组 259
10.2.1 一维数组的指针和指向一维数组的指针变量 260
10.2.2 二维数组的指针和指向二维数组的指针变量 266
10.2.3 字符串的指针和指向字符串的指针变量 273
10.3 指针变量与结构体 278
10.3.1 结构体变量的指针和指向结构体变量的指针变量 278
10.3.2 结构体数组的指针和指向结构体数组的指针变量 281
10.4 指针变量与函数 283
10.4.1 函数的指针和指向函数的指针变量 283
10.4.2 指针变量作函数参数 286
10.4.3 返回指针值的函数 293
10.5 指针数组 295
10.5.1 指针数组的定义 295
10.5.2 指针数组元素的引用 296
10.5.3 指针数组的初始化 297
10.5.4 指针数组应用举例 299
10.5.5 指针数组作main()函数的形参 300
10.6 指向指针的指针变量 303
10.6.1 指向指针的指针变量的定义 303
10.6.2 指向指针的指针变量的引用 304
10.6.3 指向指针的指针变量的初始化 304
10.6.4 指向指针的指针变量的应用举例 305
10.7 用指针处理链表 306
10.7.1 链表概述 307
10.7.2 单链表 307
10.7.3 动态内存分配函数 309
10.7.4 建立链表 312
10.7.5 输出链表 314
10.7.6 对链表的删除操作 316
10.7.7 对链表的插入操作 318
习题10 321
第11章 文件 326
11.1 C文件概述 326
11.2 文件类型指针 328
11.3 文件的打开与关闭 329
11.3.1 文件的打开(fopen()函数) 330
11.3.2 文件的关闭(fclose()函数) 331
11.4 文件的读写 332
11.4.1 字符读写函数 332
11.4.2 字符串读写函数 335
11.4.3 格式化读写函数 337
11.4.4 数据块读写函数 340
11.5 文件的定位 342
11.5.1 rewind()函数 343
11.5.2 文件的随机读写 344
11.5.3 ftell()函数 346
11.6 出错的检测 347
11.6.1 ferror()函数 348
11.6.2 clearerr()函数 348
习题11 348
附录A 常用字符与ASCII代码对照表 351
附录B 运算符的优先级和结合性 352
附录C 常用的C语言库函数 353
附录D 调试程序时常见的出错提示信息 357
参考文献 359