第1章 计算机导论 1
计算机系统 1
计算机硬件 1
计算机软件 2
计算环境 3
个人计算环境 3
分时环境 3
客户机/服务器环境 4
分布式计算 4
计算机语言 4
机器语言 4
符号语言 5
高级语言 6
创建和运行程序 6
编写和编辑程序 7
编译程序 7
连接程序 7
执行程序 8
系统开发 8
系统开发生命周期 8
程序开发 9
软件工程 13
要点和常见错误 14
关键术语 14
习题 15
复习题 15
练习 16
问题 16
第2章 C语言介绍 17
背景 17
C程序 18
C语言程序结构 18
第一个C语言程序 19
注释 20
问候程序 21
标识符 21
类型 22
void类型 23
整型数据 23
浮点型 24
类型小结 25
变量 25
变量声明 25
变量初始化 26
常量 28
常量表示 28
代码常量 30
输入/输出 32
流 32
输入/输出格式 32
程序示例 41
软件工程 47
程序文档 47
数据命名 48
数据隐藏 49
要点和常见错误 49
关键术语 50
习题 51
复习题 51
练习 52
问题 54
项目 54
第3章 C程序结构 56
表达式 56
基本表达式 57
后缀表达式 57
前缀表达式 58
单目表达式 59
二目表达式 60
优先级和结合性 64
优先级 64
结合性 65
副作用 66
表达式求值 66
不带副作用的表达式 66
带副作用的表达式 67
警告 68
类型转换 68
隐式类型转换 68
显式类型转换 71
语句 73
语句类型 73
分号的作用 75
语句和预定义常量 75
示例程序 75
软件工程 83
保持简短 83
括号 83
用户交流 83
要点和常见错误 84
关键术语 85
习题 85
复习题 85
练习 86
问题 87
项目 88
第4章 函数 90
结构化程序设计 90
C语言函数 91
用户自定义函数 94
基本函数设计 94
函数定义 98
函数声明 100
函数调用 100
函数示例 101
函数间通信 107
基本概念 107
C语言实现 108
标准函数 114
数学函数 115
随机数 117
作用域 122
全局作用域 123
局部作用域 123
编程举例——增量式开发 123
首次增量:main和getData 124
第二步增量:add 125
最终增量:打印结果 126
软件工程 127
结构图 127
结构图的规则和符号 128
函数聚合 130
自顶向下开发 131
要点和常见错误 132
关键术语 133
习题 133
复习题 133
练习 135
问题 138
项目 138
第5章 选择——作出决定 141
逻辑数据和运算符 141
C中的逻辑数据 141
逻辑操作符 142
计算逻辑表达式 142
比较运算符 144
两路选择 145
if.else 145
else空语句 146
嵌套的if语句 148
悬空的else问题 149
简化if语句 150
条件表达式 150
两路选择的例子 151
多路选择 156
switch语句 156
else-if 160
更多的标准函数 162
标准字符函数 162
分类程序 164
处理主要错误 164
增量式开发Ⅱ 165
计算器设计 165
计算器增量设计 165
软件工程 173
依赖语句 173
负逻辑 174
选择语句的规则 174
选择语句结构图 175
要点和常见错误 175
关键术语 176
习题 177
复习题 177
练习 178
程序 180
项目 181
第6章 循环 186
循环的概念 186
先判断和后判断循环 186
初始化和更新 187
循环初始化 187
循环更新 188
事件与计数器循环控制 188
事件控制循环 188
计数器控制循环 189
循环对照 189
C中的循环 189
while循环 189
for循环 193
do.while循环 196
逗号表达式 198
循环示例 200
循环相关的其他语句 209
循环的应用 211
求和 212
幂运算 212
最大和最小 213
查询 214
递归 217
迭代定义 217
递归定义 217
迭代解法 217
递归解法 218
设计递归函数 218
斐波那契数 220
递归的局限性 222
汉诺塔问题 222
汉诺塔的递归解法 223
程序设计例子——计算器 225
软件工程 227
结构图中的循环 227
测定算法效率 228
线性循环 228
对数循环 229
嵌套循环 230
大O表示法 231
标准效率尺度 231
要点和常见错误 232
关键术语 233
习题 233
复习题 233
练习 234
问题 238
项目 240
第7章 文本输入/输出 244
文件 244
文件名 245
文件信息表 245
流 245
文本流和二进制流 245
流-文件处理 245
系统创建的流 246
标准输入/输出函数 246
格式化输入/输出函数 250
流指针 250
格式控制字符串 251
输入格式(scanf与fscanf) 252
输出格式(printf和fprintf) 259
文件示例程序 264
字符输入/输出函数 270
终端字符I/O 270
终端和文件字符I/O 271
字符输入/输出示例 272
软件工程 276
测试文件 276
数据术语 278
要点和常见错误 279
关键术语 280
习题 280
复习题 280
练习 282
问题 283
项目 284
第8章 数组 286
基本概念 286
在C语言中使用数组 288
数组声明和定义 289
访问数组元素 289
数组存储 289
数组引用优先级 293
索引边界检测 293
函数间交互 295
传递单个元素 296
传递整个数组 296
数组应用 301
频率数组 301
直方图 302
随机数排列 305
排序 308
选择排序 308
冒泡排序 310
插入排序 312
排序算法测试 314
排序算法比较 314
排序小结 315
查找 315
顺序查找 316
折半查找 318
二维数组 321
声明 321
传递二维数组 325
多维数组 327
编程示例——计算平均数 329
第一步增量:main 330
第二步增量:获取数据 330
第三步增量:计算行平均数 331
第四步增量:计算列平均数 333
第五步增量:输出表 333
软件工程 335
排序测试 335
查找测试 336
排序算法分析 336
查找算法分析 338
要点和常见错误 339
关键术语 339
习题 340
复习题 340
练习 341
问题 343
项目 345
第9章 指针 350
引言 350
指针常量 350
指针值 351
指针变量 352
通过指针访问变量 353
指针声明和定义 354
声明与重定向 355
初始化指针变量 355
程序间指针交互 360
传递地址 360
返回指针的函数 361
指向指针的指针 362
兼容性 364
指针大小兼容 364
间接引用类型兼容 365
间接引用的层次兼容 366
左值和右值 367
软件工程 373
质量定义 373
质量因素 374
质量周期 376
软件工程小结 377
要点和常见错误 377
关键术语 378
习题 378
复习题 378
练习 379
问题 382
项目 382
第10章 指针应用 384
数组和指针 384
指针运算和数组 386
指针和一维数组 386
指针算术运算 388
指针运算的使用 388
指针和二维数组 390
将数组传递给函数 391
存储分配函数 394
存储器使用 394
静态存储分配 395
动态存储分配 395
存储分配函数 395
存储再分配(realloc) 397
释放存储(free) 397
指针数组 398
编程应用 398
重返选择排序 398
动态数组 402
软件工程 406
指针和函数调用 406
指针和数组 407
数组索引可交换性 407
动态存储:理论与实践 407
要点和常见错误 408
关键术语 409
习题 409
复习题 409
练习 410
问题 414
项目 415
第11章 字符串 418
字符串的概念 418
定长字符串 418
可变长字符串 419
C语言字符串 419
字符串存储 419
字符串分隔符 420
字符串字面量 420
字符串和字符 420
声明字符串 421
初始化字符串 422
字符串与赋值操作符 422
读写字符串 423
字符串输入/输出函数 423
格式化的字符串输入/输出 423
字符串输入/输出 429
示例 431
字符串数组 434
字符串操作函数 435
字符串长度 435
字符串拷贝 436
字符串的比较 440
字符串连接 442
字符串中的字符 443
在字符串中寻找子串 443
寻找字符集中的字符 444
字符串搜索——指针 444
字符串标志 444
将字符串转换为数字 445
字符串例子 447
字符串/数据转换 451
字符串到数据的转换 451
数据到字符串的转换 452
一个编程实例——Morse编码 455
软件工程 462
程序设计概念 462
信息隐藏 462
内聚性 463
软件工程小结 465
要点和常见错误 465
关键术语 466
习题 466
复习题 466
练习 467
问题 469
项目 470
第12章 枚举、结构及联合类型 472
类型定义 472
枚举类型 473
声明枚举类型 473
枚举类型的操作 473
枚举类型的转化 474
初始化枚举常量 475
匿名枚举类型:常量 475
输入和输出操作 476
结构 477
声明结构类型 477
初始化 478
访问结构 479
结构类型操作 481
复杂结构 485
结构与函数 492
传递整个结构 492
以指针的方式传递结构 495
联合 497
引用联合 497
初始化 497
联合和结构 498
Internet地址 501
编程实践 502
软件工程 510
耦合 510
数据隐藏 512
软件工程小结 512
要点和常见错误 513
关键术语 514
习题 514
复习 514
练习 515
问题 517
项目 519
第13章 二进制输入/输出 521
文本流与二进制流 521
文本文件和二进制文件 521
文本文件与二进制文件的不同 522
文件的状态 523
打开二进制文件 524
关闭二进制文件 525
文件的标准库函数 525
块输入/输出函数 525
文件状态函数 528
定位函数 529
系统文件操作 534
转换文件类型 535
由一个文本文件创建二进制文件 535
由一个二进制文件创建文本文件 538
文件编程示例 541
软件工程 547
文件更新 547
顺序文件更新 548
更新程序设计 548
错误更新 549
结构图表更新 550
更新逻辑 550
软件工程小结 551
要点和常见错误 551
关键术语 552
习题 553
复习题 553
练习 554
问题 558
项目 558
第14章 位运算符 561
确定大小的整数类型 561
逻辑位运算符 561
按位与运算符 562
按位或运算符 562
按位异或运算符 563
按位取反运算符 564
移位运算符 566
右移位运算符 566
除2运算 568
左移位运算符 568
乘2运算 569
旋转 569
掩码 571
创建掩码 571
掩码的使用 572
软件工程 578
工资单案例研究 578
程序设计步骤 579
设计结构图 579
要点和常见错误 583
关键术语 583
习题 584
复习题 584
练习 584
问题 586
项目 586
第15章 列表 589
列表的实现 589
数组实现 589
链表实现 589
一般线性表 591
插入节点 591
删除节点 594
定位线性表中的数据 596
遍历线性表 598
构建线性表 600
构建列表 600
删除节点 601
线性表测试驱动程序 602
栈 604
栈结构 605
栈算法 606
栈示例 608
队列 610
队列操作 611
队列的链表实现 611
队列函数 611
队列示例 614
树 616
树的基本概念 617
术语 617
二叉树 618
二叉查找树 622
二叉查找树示例 624
图 626
软件工程 629
原子数据和复合数据 629
数据结构 630
抽象数据类型 630
抽象数据类型模型 631
ADT数据结构 632
要点和常见错误 632
关键术语 633
习题 633
复习题 633
练习 634
问题 637
项目 638
附录A 字符集 639
附录B 关键字 646
附录C 流程图 647
附录D 计数系统 654
附录E 整数和浮点数库 667
附录F 函数库 669
附录G 预处理器命令 677
附录H 命令行参数 689
附录I void指针和函数指针 691
附录J 存储类和类型限定词 696
附录K 程序开发 704
附录L 理解复杂声明 711