第1章 程序设计基础 1
1.1算法及表示 1
1.1.1算法的特性 1
1.1.2算法的表示 1
1.2程序设计及结构化程序设计方法 4
1.2.1高级语言源程序的执行 4
1.2.2程序设计 5
1.2.3结构化程序设计 6
1.3 C程序的构成 8
1.4程序的书写格式和程序的书写风格 10
小结 10
习题 10
第2章 数据类型、运算符和表达式 12
2.1 C语言数据类型简介 12
2.2标识符 12
2.2.1字符集 12
2.2.2标识符概述 13
2.2.3标识符的分类 13
2.3常量 14
2.3.1整型常量 14
2.3.2实型常量 14
2.3.3字符常量和字符串常量 15
2.3.4符号常量 16
2.4变量 16
2.4.1整型变量 17
2.4.2实型变量 18
2.4.3字符变量 19
2.4.4变量赋初值 20
2.5运算符和表达式 20
2.5.1 C运算符简介 20
2.5.2表达式的求值规则 21
2.5.3混合运算中的类型转换 21
2.5.4算术运算符与算术表达式 22
2.5.5赋值运算符与赋值表达式 24
2.5.6逗号运算符与逗号表达式 25
2.5.7关系运算符与关系表达式 26
2.5.8逻辑运算符与逻辑表达式 27
2.5.9条件运算符与条件表达式 28
2.5.10 sizeof运算符 30
2.6应用举例 30
小结 32
习题 32
第3章顺序结构程序设计 35
3.1 C语句概述 35
3.2赋值语句 37
3.3字符数据的输入/输出 38
3.3.1字符输出函数putchar() 38
3.3.2字符输入函数getchar() 39
3.4格式输入/输出 40
3.4.1格式输出函数printf() 40
3.4.2格式输入函数scanf() 48
3.5应用举例 52
小结 53
习题 54
第4章选择结构程序设计 57
4.1 if语句 57
4.1.1简单if语句 57
4.1.2双分支if语句 59
4.1.3多分支if语句 60
4.1.4 if语句使用说明 62
4.2 if语句的嵌套 63
4.3多分支结构 66
4.4应用举例 69
小结 76
习题 76
第5章 循环结构程序设计 80
5.1 while语句 80
5.2 do...while语句 83
5.3 for语句 85
5.4几种循环的比较 89
5.5循环嵌套 90
5.6 break语句 92
5.7 continue语句 93
5.8应用举例 94
小结 103
习题 103
第6章 数组 107
6.1数组和数组元素 107
6.2一维数组 108
6.2.1一维数组的定义和引用 108
6.2.2一维数组的初始化 109
6.2.3一维数组程序举例 111
6.3多维数组 120
6.3.1二维数组的定义和引用 120
6.3.2二维数组的初始化 122
6.3.3二维数组程序举例 123
6.4字符数组 126
6.4.1字符数组的定义和引用 126
6.4.2字符数组的初始化 127
6.4.3字符串的输入/输出 127
6.4.4用于字符处理的库函数 129
6.4.5字符数组应用举例 132
6.5应用举例 135
小结 137
习题 138
第7章 函数 141
7.1模块化程序设计 141
7.1.1模块化程序设计简介 141
7.1.2函数概述 142
7.2函数的定义 143
7.2.1无参函数的定义 144
7.2.2有参函数的定义 144
7.2.3函数的返回值 145
7.3函数的调用 146
7.3.1函数调用的一般形式 146
7.3.2函数的声明 147
7.3.3函数参数的传递 149
7.4函数的嵌套调用与递归调用 150
7.4.1函数的嵌套调用 150
7.4.2函数的递归调用 151
7.5数组作函数参数 154
7.5.1数组元素作函数实参 154
7.5.2数组名作函数参数 155
7.5.3多维数组名作函数参数 156
7.6变量的作用域 156
7.6.1局部变量 156
7.6.2全局变量 157
7.7变量的存储类别 158
7.7.1变量的生存期 158
7.7.2局部变量的存储类别 159
7.7.3全局变量的存储类别 160
7.7.4存储类别小结 162
7.8内部函数和外部函数 163
7.8.1内部函数 163
7.8.2外部函数 163
7.9应用举例 163
小结 166
习题 166
第8章 编译预处理 168
8.1宏定义 168
8.1.1不带参数的宏定义 168
8.1.2带参数的宏定义 169
8.2文件包含 171
8.3应用举例 173
小结 174
习题 174
第9章 指针 178
9.1相关概念 178
9.1.1变量的地址 178
9.1.2数据的访问方式 179
9.1.3指针和指针变量 179
9.2指针变量的定义和引用 179
9.2.1指针变量的定义 179
9.2.2指针变量的初始化和赋值 180
9.2.3指针变量的引用 181
9.2.4指针的运算 182
9.3指针变量作函数参数 183
9.4数组的指针和指向数组的指针变量 185
9.4.1指向数组元素的指针 186
9.4.2通过指针引用数组元素 186
9.4.3数组名作函数参数 189
9.4.4指向多维数组的指针与指针变量 196
9.5字符串与指针 200
9.5.1字符串的表示形式 200
9.5.2对使用字符指针变量与字符数组的讨论 201
9.5.3字符串指针作函数参数 203
9.6函数与指针 204
9.6.1用函数指针变量调用函数 204
9.6.2指向函数的指针变量作函数参数 205
9.7返回指针值的函数 206
9.8指针数组和指向指针的指针 206
9.8.1指针数组的概念 207
9.8.2指向指针的指针 208
9.8.3 main()函数的命令行参数 209
9.9应用举例 209
小结 213
习题 214
第10章 结构体与共用体 216
10.1结构体类型及变量的定义 216
10.1.1结构体类型的定义 216
10.1.2结构体变量的定义 218
10.2结构体变量的引用和初始化 219
10.3结构体数组 221
10.3.1定义结构体数组 221
10.3.2结构体数组的初始化 222
10.3.3结构体数组应用 222
10.4指向结构体类型数据的指针 223
10.4.1指向结构体变量的指针 223
10.4.2指向结构体数组的指针 225
10.4.3结构体变量和指向结构体的指针作函数参数 226
10.5用指针处理链表 228
10.5.1链表概述 228
10.5.2处理动态链表所需的函数 229
10.5.3链表的基本操作 229
10.6共用体 235
10.6.1共用体变量的引用方式 236
10.6.2共用体类型数据的特点 236
10.7枚举类型 237
10.8用typedef定义类型 240
10.9应用举例 242
小结 245
习题 245
第11章 位运算 248
11.1位运算符与位运算 248
11.1.1按位与运算符(&) 248
11.1.2按位或运算符(|) 249
11.1.3按位异或运算符(^) 249
11.1.4按位取反运算符(~) 250
11.1.5左移运算符(<<) 251
11.1.6右移运算符(>>) 251
11.1.7位运算赋值运算符 251
11.1.8不同长度的数据进行位运算 252
11.2应用举例 252
小结 253
习题 253
第12章 文件 256
12.1文件的概念 256
12.2文件操作函数 257
12.2.1文件的打开 257
12.2.2文件的关闭 259
12.3文件检测函数 259
12.4常用的读写函数 260
12.4.1读写字符函数 260
12.4.2读写字符串函数 262
12.4.3读写数据块函数 262
12.4.4格式化读写函数fprintf()函数和fscanf()函数 265
12.5文件的定位 266
12.5.1 rewind()函数 266
12.5.2随机读写和fseek()函数 266
12.6应用举例 267
小结 269
习题 270
附录A习题参考答案 272
附录B常用ASCII码表 290
附录C运算符和结合性 291
附录DC语言常用语法提要 293
附录E C库函数 297
参考文献 303