第1章 绪论 1
1.1 “鸡兔同笼”——计算 1
1.2 算法——程序设计精髓 2
1.3 表示算法——PAD图 4
1.4 程序 4
1.5 执行程序 6
1.6 C语言 7
1.7 Visual C++集成开发环境 9
1.7.1 启动Visual C++ 9
1.7.2 在独立文件模式下建立环境 10
1.7.3 在独立文件模式下录入、编辑源程序 11
1.7.4 编译 12
1.7.5 连接 13
1.7.6 运行 13
1.7.7 调试 13
1.7.8 关闭运行环境 15
1.7.9 设定程序参数 17
1.7.10 在项目管理模式下建立运行环境 19
1.7.11 在项目管理模式下录入、编辑源程序 21
本章小结 23
习题一 23
第2章 顺序程序设计 24
2.1 求绿化带宽度——简单程序 24
2.2 基本符号 25
2.2.1 字符集 25
2.2.2 特定符 26
2.2.3 标识符 26
2.2.4 间隔符 27
2.2.5 注释 28
2.3 数据 29
2.3.1 字面常量 29
2.3.2 常量标识符 31
2.3.3 变量 32
2.4 语句 33
2.5 表达式 34
2.5.1 表达式语句 36
2.5.2 赋值 37
2.6 顺序控制结构 37
2.7 数据类型 38
2.7.1 浮点类型 38
2.7.2 整数类型 39
2.7.3 字符类型 40
2.7.4 混合运算 40
2.7.5 类型转换 40
2.8 输入/输出 42
2.8.1 字符输入 43
2.8.2 字符输出 43
2.8.3 格式输入 44
2.8.4 格式输出 45
本章小结 48
习题二 48
第3章 分支程序设计 50
3.1 判断成绩是否及格——双分支程序设计 50
3.2 成绩加上获奖信息——单分支程序设计 52
3.3 逻辑判断——布尔类型 59
3.3.1 关系运算 59
3.3.2 布尔运算 60
3.4 获奖分等级——多分支程序设计 61
3.5 表示汽车种类——枚举类型 66
本章小结 68
习题三 68
第4章 循环程序设计 71
4.1 计算平均成绩——循环程序 71
4.1.1 后判断条件的循环 72
4.1.2 先判断条件的循环 77
4.1.3 for语句 82
4.2 计算全班每人平均成绩——多重循环 85
4.3 程序设计实例 91
本章小结 101
习题四 101
第5章 模块化程序设计——函数 105
5.1 求给定三角形重心——模块化程序设计 105
5.2 函数 109
5.2.1 函数定义 111
5.2.2 函数调用 112
5.2.3 先调用后定义——函数原型 114
5.3 程序设计实例 116
本章小结 122
习题五 122
第6章 批量数据组织——数组 125
6.1 成绩统计——数组类型 125
6.1.1 数组声明 127
6.1.2 下标表达式 127
6.1.3 数组操作 128
6.2 统计多科成绩——多维数组 129
6.3 程序设计实例 131
6.4 线性表——分类与检索 137
6.4.1 分类 137
6.4.2 检索 143
6.5 带学号的成绩排序——数组初值 145
6.6 表示姓名——字符串 148
6.7 类型定义 156
6.8 线性表——栈和队列 157
6.8.1 队列 158
6.8.2 栈 161
6.9 程序设计实例(二) 162
本章小结 174
习题六 174
第7章 指针 178
7.1 指针与变量 178
7.1.1 指针类型和指针变量 179
7.1.2 指针所指变量 180
7.1.3 空指针、无效指针 182
7.2 指针操作 184
7.3 指向指针的指针 184
7.4 指针与数组 185
7.4.1 用指针标识数组 186
7.4.2 指针运算 187
7.4.3 应注意的问题 189
7.4.4 多维数组与指针 192
7.4.5 指针数组 194
7.5 指针与字符串 197
本章小结 203
习题七 204
第8章 表单数据组织——结构体 206
8.1 成绩单管理 206
8.2 保存成绩单——结构体 208
8.2.1 结构体类型 208
8.2.2 结构体类型名 211
8.2.3 结构体变量 213
8.2.4 指向结构体变量的指针 213
8.2.5 访问结构体变量的成分 214
8.2.6 对结构体变量的操作 215
8.3 程序设计实例 216
本章小结 221
习题八 221
第9章 再论函数 223
9.1 参数 223
9.1.1 C参数传递规则 223
9.1.2 传递直线方程系数——指针作参数 225
9.1.3 对任意数组排序——数组作参数 228
9.1.4 输出日期——结构体作参数 231
9.2 函数值 232
9.2.1 打印月份名——返回指针值的函数 232
9.2.2 读入一张身份证信息——返回结构体值的函数 234
9.3 作用域 235
9.3.1 作用域 235
9.3.2 局部量和全局量 236
本章小结 239
习题九 239
第10章 递归程序设计 242
10.1 计算n!——递归程序设计 242
10.2 程序设计实例 244
10.3 计算算术表达式的值——间接递归 252
10.4 递归程序执行过程 257
本章小结 270
习题十 270
第11章 外部数据组织——文件 273
11.1 重新考虑户籍管理问题——文件 273
11.2 文件概述 274
11.3 打开、关闭文件 277
11.4 I/O操作 279
11.4.1 字符读写 279
11.4.2 字符串读写 281
11.4.3 格式化读写 282
11.4.4 数据块读写 282
11.4.5 文件定位 285
11.5 与操作系统文件联系——程序参数 288
11.6 程序设计实例 292
本章小结 295
习题十一 295
第12章 程序开发 297
12.1 求玉米单产——自顶向下、逐步求精 297
12.2 结构化程序设计原则 301
12.3 程序风格 302
12.3.1 行文格式 302
12.3.2 标识符 303
12.3.3 注释 304
12.3.4 关于程序的“说明和定义” 304
12.4 程序设计实例 304
12.5 八皇后——穷举与试探 312
本章小结 320
习题十二 320
第13章 动态数据组织 323
13.1 保存实数序列——动态数据结构 323
13.2 动态变量 324
13.3 链表 326
13.3.1 单向链表 327
13.3.2 栈 333
13.3.3 队列 334
13.4 程序设计实例 336
13.5 树 344
13.5.1 树 344
13.5.2 树的操作 345
13.6 图 355
本章小结 358
习题十三 358
第14章 若干深入问题 361
14.1 函数 361
14.1.1 不定方向的数组排序——函数指针 361
14.1.2 计算定积分——函数作参数 363
14.1.3 指针形参做指针参数实参 367
14.1.4 实在参数计算顺序 369
14.1.5 函数副作用 371
14.2 运算 373
14.2.1 赋值运算 373
14.2.2 顺序表达式 374
14.2.3 条件表达式 374
14.2.4 位运算 375
14.2.5 左值 377
14.3 语句 378
14.3.1 break 378
14.3.2 continue 379
14.3.3 for的延伸 380
14.3.4 else两义性问题 380
14.3.5 goto和标号 381
14.4 数据组织 382
14.4.1 行指针 382
14.4.2 职工登记卡——共用体 387
14.4.3 位段 390
14.5 存储类别 391
14.5.1 数据在内存中的存储 391
14.5.2 生存期 392
14.5.3 局部变量的存储类别 393
14.5.4 全局变量的存储类别 396
14.5.5 函数的存储类别 398
14.6 编译预处理 399
14.6.1 宏 399
14.6.2 文件包含 402
14.6.3 条件编译 402
本章小结 405
习题十四 406
附录一 ACSII字符集 408
附录二 标准函数库头文件表 411
附录三 常用函数库中所含常用函数 412
参考文献 414