第一章 基本知识 1
1.1 程序设计语言 1
1.1.1 机器语言 1
1.1.2 汇编语言 2
1.1.3 高级语言 2
1.1.4 程序的执行 3
1.2 C语言简况 3
1.3 程序设计语言的形式描述 5
1.3.1 语法、语义 5
1.3.2 BNF 5
1.3.3 文法的其他表示法 8
1.4 C程序结构 10
1.5 算法及其描述工具PAD图 11
1.5.1 算法 11
1.5.2 PAD图 12
1.5.3 PAD实例 16
本章小结 18
习题一 18
第二章 数据信息 23
2.1 基本符号 23
2.1.1 字符集 23
2.1.2 标识符 24
2.1.3 保留字 25
2.1.4 分隔符 25
2.1.5 运算符 25
2.1.6 常量 26
2.1.7 间隔符 29
2.1.8 注释 29
2.2 数据 30
2.2.1 浮点类型 31
2.2.2 整数类型 32
2.2.5 枚举类型 33
2.2.3 字符类型 33
2.2.4 布尔类型 33
2.3 混合运算 35
2.4 关系运算 36
本章小结 36
习题二 37
第三章 简单程序 39
3.1 常量及常量定义 39
3.2 变量及变量声明 39
3.2.1 变量 39
3.2.2 变量声明 40
3.2.3 变量形态 41
3.2.4 变量地址 42
3.2.5 变量初始化 42
3.3 表达式 43
3.3.1 表达式的结构 43
3.3.2 表达式的计算 45
3.4 语句 46
3.5 表达式语句 47
3.6 赋值 47
3.7 类型转换 51
3.8 输入/输出 54
3.8.1 字符输入 54
3.8.2 字符输出 55
3.8.3 格式输入 55
3.8.4 格式输出 56
本章小结 59
习题三 59
第四章 函数 63
4.1 带子程序的C程序 63
4.2 函数 66
4.2.1 函数调用 66
4.2.2 函数定义 67
4.2.3 函数原型 71
4.3 程序设计实例 72
本章小结 78
习题四 78
第五章 流程控制 80
5.1 顺序结构 80
5.2 分支程序设计 80
5.2.1 逻辑值控制的分支程序设计 81
5.2.2 算术值控制的多分支程序设计 85
5.3 循环程序设计 88
5.3.1 先判断条件的循环程序设计 89
5.3.2 后判断条件的循环程序设计 91
5.3.3 for语句 95
5.4 程序设计实例 99
本章小结 110
习题五 111
第六章 数组 120
6.1 结构型数据类型 120
6.2 数组类型 120
6.2.1 数组声明 120
6.2.2 下标表达式 122
6.2.3 应注意的问题 122
6.3 多维数组 123
6.4 程序设计实例——数组在程序设计中的应用 124
6.5 数组初值 142
6.6 字符数组 144
6.7 类型定义 145
本章小结 147
习题六 147
第七章 指针 157
7.1 基本概念 157
7.1.1 指针类型和指针变量 158
7.1.2 指针所指变量 160
7.1.4 通用指针 162
7.1.3 空指针与无效指针 162
7.2 指针运算 164
7.3 指针与数组 166
7.3.1 用指针标识数组 167
7.3.2 多维数组与指针 171
7.3.3 指针数组 176
7.3.4 指针与数组总结 180
7.4 指针与字符串 181
7.5 指向指针的指针 185
7.6 命令行参数 187
本章小结 189
习题七 189
8.1 参数 192
8.1.1 C参数传递规则 192
第八章 再论函数 192
8.1.2 指针作参数 194
8.1.3 数组作参数 200
8.1.4 其他程序设计语言的参数类别 204
8.2 返回指针的函数 207
8.3 作用域 210
8.3.1 作用域 210
8.3.2 生存期 212
8.3.3 局部量和全局量 213
8.4 递归 215
8.4.1 递归程序 215
8.4.2 递归程序设计 216
8.4.3 间接递归 221
8.4.4 递归程序执行过程 227
本章小结 238
习题八 238
9.1.2 goto语句 246
9.1.1 带标号的语句 246
9.1 goto和标号 246
第九章 程序开发和结构化程序设计 246
9.2 空语句 247
9.3 结构化程序设计原则 248
9.4 程序风格 249
9.4.1 良好的行文格式 250
9.4.2 用合适的助记名来命名标识符 252
9.4.3 注释 252
9.4.4 对程序说明的建议 253
9.5 程序的正确性 253
9.5.1 错误种类 253
9.5.2 程序测试和验证 254
9.5.3 测试方法 255
9.6 可移植性 255
9.7 文档 256
9.8.1 自顶向下、逐步求精 257
9.8 自顶向下逐步求精的程序设计技术 257
9.8.2 求精过程的表示 259
9.8.3 求精实例 260
9.9 受限排列组合——穷举法与试探法 269
本章小结 281
习题九 281
第十章 文件 288
10.1 文件概述 288
10.2 文件操作 290
10.2.1 打开、关闭文件 291
10.2.2 字符读/写 292
10.2.3 字符串读/写 293
10.2.4 数据块读/写 293
10.2.5 格式化读/写 294
10.2.6 文件定位 294
10.3 文件操作实例 296
习题十 301
本章小结 301
第十一章 结构体与共用体 305
11.1 结构体 305
11.1.1 结构体类型 305
11.1.2 结构体类型名 307
11.1.3 结构体变量 308
11.1.4 指向结构体变量的指针 309
11.1.5 结构体变量的成分 309
11.2 共用体 313
11.2.1 带共用体的结构体实例 313
11.2.2 共用体类型 314
11.2.3 限制 318
11.2.4 switch语句与共用体 318
11.3 结构体与函数 318
11.3.1 返回结构体值的函数 319
11.3.2 结构体作函数参数 320
11.4 程序设计实例 322
本章小结 327
习题十一 327
第十二章 动态数据结构 331
12.1 管理动态变量 332
12.2 动态数据结构 334
12.2.1 栈(stack) 334
12.2.2 队列(queue) 336
12.2.3 链表(linkage table) 337
12.2.4 树(tree) 340
12.3 程序设计实例 346
本章小结 361
习题十二 361
第十三章 三论函数——几个较深入的问题 367
13.1 函数指针 367
13.2 函数作参数 369
13.3 函数副作用 372
13.4 形式参数作实在参数 373
13.5 参数结合顺序 374
13.6 可变长度数组 376
13.6.1 可变长度数组 376
13.6.2 可变长度数组作参数 377
本章小结 378
习题十三 378
第十四章 C语言独有的特性 383
14.1 运算 383
14.1.1 sizeof 383
14.1.2 赋值运算 384
14.1.3 顺序表达式 384
14.1.4 条件表达式 384
14.1.5 位运算 385
14.2 位段 387
14.3 存储类别 388
14.3.1 数据在内存中的存储 389
14.3.2 自动存储类别 389
14.3.3 寄存器存储类别 390
14.3.4 变量的静态存储类别 391
14.3.5 变量的外部存储类别 393
14.3.6 函数的存储类别 394
14.3.7 类型定义符 395
14.4 const指针 395
14.4.1 指向常量的指针(常量指针) 396
14.4.2 指针常量 396
14.4.3 指向常量的指针常量(常量指针常量) 397
14.5 有关指针的总结 397
14.6 语句 399
14.6.1 break 399
14.6.2 continue 400
14.7.1 宏定义 401
14.7 编译预处理 401
14.6.3 for的延伸 401
14.7.2 文件包含 405
14.7.3 条件编译 405
本章小结 408
附录一 ACSII字符集 409
附录二 C语言语法 412
附录三 标准库头文件表 422
附录四 实验指导书 423
F4.1 使用Turbo C 423
F4.1.1 启动Turbo C 423
F4.1.2 选择工作目录 423
F4.1.3 建立工作环境 425
F4.1.4 编辑源文件 426
F4.1.5 编译、连接 426
F4.2.2 建立环境 427
F4.2.1 启动VC++ 427
F4.1.6 运行 427
F4.2 visual c++集成开发环境 427
F4.2.3 录入、编辑源程序 429
F4.2.4 编译 429
F4.2.5 连接 430
F4.2.6 运行 430
F4.3 实验 431
F4.3.1 实验一 C环境基本操作 431
F4.3.3 实验三 程序的流程控制 432
F4.3.2 实验二 模块化程序设计 432
F4.3.4 实验四 数组的概念和应用 433
F4.3.5 实验五 指针及其在程序设计中的应用 434
F4.3.6 实验六 递归程序设计 434
F4.3.7 实验七 数据组织 434
F4.3.8 实验八 文件及其应用 435
F4.4 课程设计 436
参考文献 441