第1章 程序设计基础知识 1
1.1 计算机的工作原理 1
1.1.1 计算机的指令系统 1
1.1.2 计算机的解题过程 2
1.1.3 存储程序原理 3
1.2 程序语言与程序设计 3
1.2.1 计算机程序与程序语言 3
1.2.2 程序设计 5
1.3 算法和算法的表示 6
1.3.1 什么是算法 6
1.3.2 算法的基本特征 8
1.4 用流程图表示算法 9
1.5 用结构化流程图表示算法 10
1.5.1 什么是结构化程序 10
1.5.2 三种基本结构 11
1.5.3 结构化流程图 13
1.6 结构化程序设计方法 14
1.6.1 结构化程序设计特征 14
1.6.2 自顶而下的设计方法 15
1.6.3 程序设计的风格 16
习题 18
第2章 C语言简介 20
2.1 C语言的发展过程 20
2.2 C语言的特点 20
2.3 C语言程序的格式和结构特点 21
2.3.1 C语言程序的格式 21
2.3.2 C语言程序的结构特点 23
2.4 C语言程序的上机执行过程 25
习题 29
第3章 数据类型、运算符与表达式 31
3.1 关键字、标识符和保留标识符 31
3.2 数据与数据类型 32
3.3 基本数据类型及其表示 33
3.3.1 常量与变量 33
3.3.2 整型数据、实型数据和字符型数据 35
3.4 C语言的运算符 41
3.4.1 运算符简介 41
3.4.2 算术运算符和算术表达式 42
3.4.3 赋值运算符和赋值表达式 43
3.4.4 增1和减1运算符 45
3.4.5 关系运算符和关系表达式 45
3.4.6 逻辑运算符和逻辑表达式 46
3.5 逗号表达式 48
3.6 程序举例 48
习题 50
第4章 控制结构 54
4.1 C语句的构成 54
4.2 输入与输出函数 56
4.2.1 格式控制的输入与输出函数 56
4.2.2 字符的输入与输出函数 66
4.3 顺序结构 67
4.4 选择结构 69
4.4.1 if语句 69
4.4.2 条件运算符和条件表达式 74
4.4.3 switch语句 75
4.4.4 选择结构程序设计举例 77
4.5 循环结构 78
4.5.1 while语句 79
4.5.2 do-while语句 81
4.5.3 for语句 82
4.5.4 循环的嵌套 86
4.5.5 几种循环的比较 86
4.6 其他控制语句 88
4.6.1 break语句 88
4.6.2 continue语句 89
4.6.3 goto语句 89
4.7 良好的源程序书写风格 90
4.7.1 源程序书写格式 90
4.7.2 注释的使用 90
4.8 程序举例 92
习题 97
第5章 数组 105
5.1 一维数组 105
5.1.1 一维数组的定义 105
5.1.2 一维数组的初始化 106
5.1.3 一维数组程序举例 107
5.2 二维数组 111
5.2.1 二维数组的定义 112
5.2.2 二维数组的初始化 112
5.2.3 二维数组程序举例 114
5.3 字符数组 116
5.3.1 字符数组的定义 116
5.3.2 字符数组的初始化 117
5.3.3 字符数组的输入输出 118
5.3.4 字符串处理函数 120
5.3.5 字符数组程序举例 124
习题 127
第6章 函数 134
6.1 概述 134
6.2 函数的定义和调用 135
6.2.1 函数的定义 135
6.2.2 函数的调用 137
6.3 函数的参数及其传递方式 141
6.3.1 变量作函数参数 141
6.3.2 数组作函数参数 142
6.4 函数的嵌套调用和递归调用 149
6.4.1 函数的嵌套调用 149
6.4.2 函数的递归调用 153
6.5 变量的作用域及其存储类型 156
6.5.1 局部变量及其存储类型 156
6.5.2 全局变量及其存储类型 159
6.6 内部函数和外部函数 163
6.6.1 内部函数 163
6.6.2 外部函数 164
习题 169
第7章 编译预处理 175
7.1 概述 175
7.2 宏定义 175
7.2.1 不带参数的宏定义 175
7.2.2 符号常量 177
7.2.3 带参数的宏定义 177
7.3 文件包含 180
7.4 条件编译 181
7.5 程序举例 183
习题 184
第8章 结构体和共用体 187
8.1 结构体 187
8.1.1 结构体变量的定义 188
8.1.2 结构体变量的初始化 189
8.1.3 结构体变量的引用 190
8.1.4 结构体数组 191
8.1.5 结构体应用举例 192
8.2 共用体 193
8.2.1 共用体变量的定义 193
8.2.2 共用体变量的引用 194
8.2.3 共用体类型数据的特点 195
8.3 枚举类型 196
8.4 用typedef定义类型 198
习题 199
第9章 指针的概念 203
9.1 指针与地址 203
9.1.1 地址 203
9.1.2 指针 203
9.2 指针变量的定义 204
9.3 指针变量的操作 205
9.3.1 指针运算符 205
9.3.2 指针的赋值与比较 205
9.3.3 指针的算术运算 207
9.4 指针与数组 208
9.4.1 指针与一维数组 208
9.4.2 指针与字符串 211
9.4.3 指针与二维数组 214
9.4.4 指向数组的指针 217
9.5 程序举例 218
习题 219
第10章 指针与函数 225
10.1 函数的参数为指针 225
10.1.1 指针变量作函数参数 225
10.1.2 数组名作函数参数 228
10.1.3 指向一维数组的指针作函数的参数 232
10.2 函数的返回值为指针 234
10.3 指向函数的指针 236
10.3.1 通过指向函数的指针调用函数 236
10.3.2 函数指针作函数的参数 237
10.4 指针数组和指向指针的指针 238
10.4.1 指针数组 238
10.4.2 指向指针的指针 241
10.5 指针数组作main()函数的参数 242
10.6 void型指针 245
10.7 指针小结 245
10.7.1 与指针有关的变量说明 245
10.7.2 使用指针时易犯的错误 246
习题 247
第11章 指针与结构体 257
11.1 指针指向结构体 257
11.1.1 指向结构体变量的指针 257
11.1.2 指针指向结构体数组 258
11.2 结构体指针作函数参数 259
11.3 链表 261
11.3.1 动态存储分配 261
11.3.2 单链表 263
11.3.3 环形链表和双向链表 270
习题 272
第12章 位运算 277
12.1 二进制表示的整数及其位操作 277
12.1.1 二进制数位及其表示数的范围 277
12.1.2 负整数在机器中的表示 278
12.2 位运算符和位运算 279
12.2.1 “与”运算符 280
12.2.2 “或”运算符 281
12.2.3 “异或”运算符 281
12.2.4 “取反”运算符 283
12.2.5 “左移”运算符 284
12.2.6 “右移”运算符 284
12.2.7 位运算赋值运算符 285
12.2.8 不同长度的数据进行位运算 286
12.3 位运算举例 286
12.4 位段 288
习题 291
第13章 文件 294
13.1 文件的概念 294
13.2 文件的打开与关闭 295
13.2.1 文件的打开 295
13.2.2 文件的关闭 296
13.3 文件的读写 297
13.3.1 fputc和fgetc函数 297
13.3.2 fscanf和fprintf函数 299
13.3.3 fwrite和fread函数 300
13.4 文件的指针管理——文件的定位 302
13.4.1 rewind函数 302
13.4.2 fseek函数 302
13.4.3 ftell函数 303
13.5 非缓冲文件系统 303
13.5.1 打开文件函数 303
13.5.2 关闭文件函数 303
13.5.3 创建文件函数 304
13.5.4 成块读写函数 304
13.5.5 文件的定位函数 304
习题 305
附录A 常用字符及其ASCH代码 308
附录B C语言的运算符及其结合性 310
附录C C语言的库函数 312
附录D C语言中的关键字 319
参考文献 320