第1章 C语言概述 1
1.1 C语言简介 1
1.1.1 程序和程序设计语言 1
1.1.2 C语言的发展历史 1
1.1.3 C语言的特点 3
1.2 简单的C程序介绍 4
1.3 运行C程序的步骤 7
本章小结 9
第2章 基本数据类型及运算 10
2.1 数据类型 10
2.2 常量与变量 11
2.2.1 标识符 11
2.2.2 常量 11
2.2.3 变量 14
2.3 格式化输入与输出函数 15
2.3.1 格式输出函数printf() 16
2.3.2 格式输入函数scanf() 20
2.4 整型数据 23
2.4.1 整型变量 23
2.4.2 整型常量 24
2.5 实型数据 25
2.5.1 实型常量 25
2.5.2 实型变量 25
2.6 字符型数据 26
2.6.1 字符常量 26
2.6.2 字符变量 26
2.7 变量赋初值 28
2.8 各类数值型数据间的混合运算 29
2.8.1 隐式类型转换 29
2.8.2 强制类型转换 30
2.9 算术运算符和算术表达式 30
2.9.1 C语言运算符简介 30
2.9.2 算术运算符和算术表达式 31
2.1 0赋值运算符和赋值表达式 34
2.1 0.1 赋值运算符 34
2.1 0.2 赋值表达式 35
2.1 1逗号运算符和逗号表达式 35
本章小结 35
第3章 顺序结构程序设计 36
3.1 结构化程序设计方法 36
3.1.1 结构化程序设计方法的产生 36
3.1.2 三种基本控制结构 36
3.2 C语句概述 38
3.2.1 表达式语句 38
3.2.2 控制语句 38
3.2.3 函数调用语句 39
3.2.4 空语句 39
3.2.5 复合语句 39
3.3 字符数据的输入与输出 40
3.3.1 字符格式控制符 40
3.3.2 字符输入输出函数 40
3.3.3 程序举例 42
本章小结 43
第4章 选择结构程序设计 44
4.1 关系运算符和关系表达式 44
4.2 逻辑运算符和逻辑表达式 45
4.3 if语句 46
4.3.1 if语句的基本形式 46
4.3.2 if语句的嵌套形式 49
4.3.3 条件运算符 52
4.4 switch语句 53
本章小结 56
第5章 循环结构程序设计 57
5.1 概述 57
5.2 while语句 57
5.3 do-while语句 61
5.4 for语句 63
5.5 循环的嵌套 68
5.6 break语句和continue语句 71
5.6.1 break语句 71
5.6.2 continue语句 73
本章小结 75
第6章 函数 77
6.1 概述 77
6.1.1 模块化程序设计思想 77
6.1.2 函数的基本概念 78
6.1.3 库函数与用户自定义函数 79
6.2 函数定义的一般形式 81
6.2.1 函数的定义 81
6.2.2 自定义函数在程序代码中的位置 85
6.3 函数的参数和函数的返回值 85
6.3.1 函数的参数 85
6.3.2 函数的返回值 86
6.4 函数的调用 87
6.4.1 语句调用 87
6.4.2 表达式调用 87
6.4.3 嵌套调用 88
6.5 局部变量和全局变量 89
6.5.1 局部变量 89
6.5.2 全局变量 91
6.6 函数的高级应用 91
6.6.1 函数的递归调用 91
6.6.2 变量的存储类别 94
6.6.3 内部函数和外部函数 96
本章小结 97
第7章 数组 99
7.1 一维数组的定义和引用 99
7.1.1 一维数组的定义 99
7.1.2 一维数组元素的引用 100
7.1.3 一维数组元素的初始化 100
7.1.4 一维数组程序举例 101
7.2 二维数组的定义和引用 103
7.2.1 二维数组的定义 103
7.2.2 二维数组元素的引用 104
7.2.3 二维数组的初始化 104
7.2.4 二维数组程序举例 105
7.3 用字符数组表示字符串 108
7.3.1 字符数组的定义 108
7.3.2 字符数组的初始化 108
7.3.3 字符数组的输入和输出 110
7.3.4 字符串处理函数 111
7.3.5 字符数组应用举例 115
7.4 数组作为函数参数 116
7.4.1 数组元素作函数实际参数 116
7.4.2 数组名作函数参数 117
7.5 数组综合实例 119
本章小结 122
第8章 编译预处理 123
8.1 宏定义 123
8.1.1 不带参数的宏 123
8.1.2 带参数的宏 125
8.2 文件包含 127
8.2.1 库函数与头文件包含 127
8.2.2 文件包含处理 128
8.3 条件编译 131
本章小结 134
第9章 指针 135
9.1 内存地址与指针 135
9.1.1 内存地址和内存分配 135
9.1.2 指针和指针变量 138
9.2 指向变量的指针变量 139
9.2.1 指向变量的指针变量的定义 139
9.2.2 指向变量的指针变量的赋值和初始化 140
9.2.3 指向变量的指针变量的引用 141
9.3 指针和数组 143
9.3.1 指向一维数组元素的指针变量 143
9.3.2 指针变量的算术运算和比较 144
9.3.3 通过指针引用一维数组元素 145
9.3.4 指针数组 147
9.4 字符串与指针 148
9.4.1 用字符数组实现 148
9.4.2 用字符指针实现 150
9.4.3 字符串的数组实现和指针实现的区别 151
9.4.4 字符串的数组实现和指针实现的联系 154
9.5 函数与指针 155
9.5.1 指针作为函数的参数 155
9.5.2 返回值为指针的函数 157
9.5.3 函数的指针与通过指针调用函数 159
本章小结 160
第10章 结构体和共用体 162
10.1 概述 162
10.2 定义结构体类型变量的方法 162
10.2.1 结构体类型声明 162
10.2.2 结构体类型变量的定义 163
10.3 结构体变量的引用 165
10.4 结构体变量的初始化 166
10.5 结构体数组 167
10.5.1 结构体数组的定义 167
10.5.2 结构体数组的初始化 168
10.6 共用体 169
10.6.1 共用体类型声明 169
10.6.2 共用体变量的定义及引用 170
10.7 枚举类型 172
10.7.1 枚举类型声明 172
10.7.2 枚举变量的定义及其赋值 173
10.8 用typedef定义类型 174
本章小结 175
第11章 文件 176
11.1 文件概述 176
11.1.1 文件的基本概念 176
11.1.2 文本文件和二进制文件 176
11.1.3 缓冲文件系统 177
11.2 文件类型指针 178
11.3 文件的打开和关闭 178
11.3.1 文件的打开 178
11.3.2 文件的关闭 180
11.4 文件的读写 181
11.4.1 以字符方式读写文件 181
11.4.2 以字符串方式读写文件 183
11.4.3 格式化方式读写文件 186
11.4.4 数据块方式读写文件 187
11.4.5 文件结束判断 189
11.5 文件的定位函数 190
11.5.1 指向文件的首地址 190
11.5.2 改变文件指针位置 190
11.5.3 获取当前文件指针位置 190
11.6 出错检测 192
11.6.1 ferror()函数 192
11.6.2 clearerr()函数 192
本章小结 193
参考文献 194