| 作 者: | 裘宗燕 |
| 出版社: | 机械工业出版社 |
| 丛编项: | 重点大学计算机教材 |
| 版权说明: | 本书为出版图书,暂不支持在线阅读,请支持正版图书 |
| 标 签: | C |
| ISBN | 出版时间 | 包装 | 开本 | 页数 | 字数 |
|---|---|---|---|---|---|
| 未知 | 暂无 | 暂无 | 未知 | 0 | 暂无 |
第1章 程序设计和C语言 1
1.1 程序和程序语言 1
1.2 C语言简介 8
1.3 一个简单的C程序 10
1.4 程序开发过程 13
1.5 问题与程序设计 17
本章讨论的重要概念 18
练习 18
第2章 数据对象与计算 21
2.1 基本字符、名字表示、标识符和关键字 21
2.2 数据与类型 23
2.3 基本类型与数据表示 23
2.3.1 整数类型和整数的表示 23
2.3.2 实数类型和实数的表示 25
2.3.3 字符类型和字符的表示 26
2.3.4 数据的外部表示、内部表示与转换 27
2.4 运算符、表达式与计算 30
2.4.1 算术运算符 30
2.4.2 算术表达式 31
2.4.3 表达式的求值 32
2.4.4 计算和类型 34
2.5 数学函数库及其使用 37
2.5.1 函数、函数调用 37
2.5.2 数学函数及其使用 38
2.5.3 函数调用中的类型转换 39
问题解释 40
几个常用程序模式 40
本章讨论的重要概念 41
练习 41
第3章 变量、函数和控制结构 43
3.1 语句、复合结构 43
3.2 变量—概念、定义和使用 44
3.2.1 变量的定义 45
3.2.2 变量的赋值与取值 46
3.2.3 几个问题 48
3.3 定义函数(初步) 50
3.3.1 函数定义 52
3.3.2 函数和程序 55
3.3.3 函数与类型 56
3.3.4 自定义输出函数 57
3.4 关系表达式、逻辑表达式、条件表达式 58
3.4.1 关系表达式和条件表达式 58
3.4.2 逻辑表达式 60
3.5 语句与控制结构 61
3.5.1 条件语句(if语句) 62
3.5.2 循环语句(1):while语句 65
3.5.3 循环语句(2):for语句 68
3.6 若干常用结构和问题 70
3.6.1 增量和减量运算符(++、--) 70
3.6.2 逗号运算符 71
3.6.3 实现二元运算符操作的赋值运算符 71
3.6.4 空语句 72
3.6.5 表达式和求值 73
问题解释 74
几个常用程序模式 74
本章讨论的重要概念 75
练习 75
第4章 基本程序设计技术 79
4.1 循环程序设计 79
4.1.1 基本循环方式 80
4.1.2 求一系列完全平方数 81
4.1.3 判断素数(谓词函数) 82
4.1.4 艰难的旅程(浮点误差) 83
4.1.5 求立方根(迭代和逼进) 85
4.1.6 求sin函数值(通项计算) 86
4.2 循环程序的问题 87
4.2.1 从循环中退出 87
4.2.2 循环中的几种变量 89
4.3 循环与递归 90
4.3.1 阶乘和乘幂(循环,递归) 90
4.3.2 Fibonacci序列(计算与时间) 93
4.3.3 为计算过程计时 94
4.3.4 Fibonacci序列的迭代计算(程序正确性与循环不变式) 95
4.3.5 最大公约数 97
4.3.6 河内塔(梵塔)问题 100
4.4 基本输入输出 102
4.4.1 格式输入函数scanf 102
4.4.2 字符输入输出函数 109
4.4.3 输入函数的返回值及其作用 112
4.5 控制结构和控制语句 114
4.5.1 do-while循环结构 114
4.5.2 流程控制语句 115
4.5.3 开关语句 117
4.6 程序设计实例 119
4.6.1 一个简单计算器 119
4.6.2 定义枚举常量 119
4.6.3 单词计数问题 120
4.7 程序测试和排错 123
4.7.1 测试 123
4.7.2 白箱测试 124
4.7.3 黑箱测试 125
4.7.4 排除程序里的错误 126
问题解释 127
几个常用程序模式 128
本章讨论的重要概念 128
练习 128
第5章 C程序结构 133
5.1 数值类型 133
5.1.1 实数类型和整数类型 133
5.1.2 字符类型 133
5.1.3 整数类型 134
5.1.4 基本数据类型的选择 135
5.2 函数和标准库函数 136
5.2.1 C语言的库函数 137
5.2.2 字符分类函数 137
5.2.3 随机数生成函数 138
5.3 函数定义和程序的函数分解 139
5.3.1 主函数 140
5.3.2 程序的函数分解 141
5.3.3 对函数的两种观点 142
5.3.4 函数原型 146
5.4 C程序结构与变量 149
5.4.1 外部定义的变量 150
5.4.2 作用域与生存期 151
5.4.3 外部变量和自动变量 151
5.4.4 变量定义的嵌套 153
5.4.5 静态局部变量 154
5.4.6 变量的其他问题 155
5.4.7 一个实例 157
5.5 预处理 159
5.5.1 文件包含命令 159
5.5.2 宏定义与宏替换 160
5.5.3 条件编译命令 163
5.6 定义常量 164
5.7 字位运算符 165
5.8 编程实例 168
5.8.1 一个简单的猜数游戏 168
5.8.2 加密与解密 170
本章讨论的重要概念 172
练习 172
第6章 数组 175
6.1 数组的概念、定义和使用 175
6.1.1 定义数组变量 176
6.1.2 数组的使用 177
6.1.3 数组的初始化 179
6.1.4 数组的存储实现 180
6.2 数组程序实例 181
6.2.1 从字符到下标 181
6.2.2 筛法求素数 182
6.2.3 成绩分类 183
6.2.4 多项式求值 184
6.2.5 定义数组的问题 185
6.3 数组作为函数参数 186
6.3.1 一个例子 186
6.3.2 修改实参数组的元素 188
6.4 字符数组与字符串 189
6.4.1 字符数组 189
6.4.2 字符串 189
6.4.3 程序实例 191
6.4.4 标准库字符串处理函数 193
6.4.5 输出文本里的最长行 194
6.5 两维和多维数组 198
6.5.1 多维数组的初始化 198
6.5.2 多维数组的表示和使用 199
6.5.3 多维数组作为函数的参数 200
6.6 编程实例 201
6.6.1 成绩直方图 201
6.6.2 一个通用带检查的整数输入函数 205
6.6.3 “计算”数组变量的大小 206
6.6.4 统计C程序里的关键字 208
6.6.5 数组的划分 211
6.6.6 数组的排序 213
问题解释 215
几个常用程序模式 215
本章讨论的重要概念 215
练习 215
第7章 指针 217
7.1 地址与指针 217
7.2 指针变量的定义和使用 218
7.2.1 指针操作 218
7.2.2 指针作为函数的参数 219
7.2.3 与指针有关的一些问题 222
7.3 指针与数组 224
7.3.1 指向数组元素的指针 224
7.3.2 基于指针运算的数组程序设计 227
7.3.3 数组参数与指针 228
7.3.4 指针与数组操作的程序实例 229
7.3.5 字符指针与字符数组 231
7.4 指针数组 233
7.4.1 指针数组与两维数组 234
7.4.2 命令行参数及其处理 235
7.5 多维数组作为参数的通用函数 238
7.6 动态存储管理 240
7.6.1 为什么需要动态存储管理 240
7.6.2 C语言的动态存储管理机制 241
7.6.3 两个程序实例 244
7.6.4 函数、指针和动态存储 247
7.7 定义类型 250
7.7.1 定义数组类型和指针类型 251
7.7.2 复杂类型描述与解读 252
7.8 指向函数的指针 254
7.8.1 函数指针的定义和使用 254
7.8.2 函数指针作为函数的参数 255
7.8.3 数值积分函数 257
7.8.4 若干以函数指针为参数的数组操作实用函数 259
几个常用程序模式 260
本章讨论的重要概念 260
练习 261
第8章 文件和输入输出 263
8.1 文件的概念 263
8.1.1 流和文件指针 263
8.1.2 缓冲式输入输出 264
8.2 文件的使用 265
8.2.1 文件的打开和关闭 265
8.2.2 输入输出函数 267
8.2.3 程序实例 268
8.2.4 直接输入输出函数 270
8.3 标准流输入输出与格式控制 271
8.3.1 行式输入和输出 271
8.3.2 输入格式控制 272
8.3.3 输出格式控制 276
8.3.4 以字符串作为格式化输入输出对象 278
8.3.5 标准错误流 278
8.4 程序实例 279
8.4.1 求文件数据的平均值 279
8.4.2 一个背单词程序 281
8.4.3 资金账目系统 285
练习 288
第9章 结构和其他数据机制 291
9.1 结构(struct) 291
9.1.1 结构声明与变量定义 291
9.1.2 结构变量的初始化和使用 296
9.1.3 结构、数组与指针 297
9.2 结构与函数 299
9.2.1 处理结构的函数 299
9.2.2 程序实例 302
9.3 联合(union) 306
9.4 枚举(enum) 308
9.5 编程实例 310
9.5.1 数据组的排序 310
9.5.2 复数的表示和处理 312
9.6 链接结构(自引用结构) 315
9.6.1 链接结构 315
9.6.2 自引用结构的定义 317
9.6.3 程序实现 318
9.6.4 数据与查找 321
9.7 字段 322
问题解释 323
本章讨论的重要概念 323
练习 323
第10章 程序开发技术 327
10.1 分别编译和C程序的分块开发 327
10.1.1 分块开发的问题和方法 327
10.1.2 程序实例:学生成绩处理 328
10.1.3 分块重整 333
10.1.4 其他安排和考虑 336
10.1.5 模块化思想和技术 338
10.1.6 单一头文件结构和多个头文件结构 342
10.2 功能模块和程序库 345
10.2.1 复数模块 345
10.2.2 目标文件和库 348
10.2.3 防止重复包含 349
10.3 错误报告和处理 349
10.3.1 建立统一的错误报告机制 349
10.3.2 定义变参数的错误报告函数 350
10.3.3 运行中错误的检查和处理 352
10.4 程序的配置 358
10.4.1 程序的行为参数和启动时的配置 358
10.4.2 交互式配置 360
10.4.3 通过命令行参数 361
10.4.4 采用配置文件 362
10.5 程序开发过程 362
10.5.1 自上而下的开发 363
10.5.2 自下而上的开发 365
10.5.3 实际开发过程 365
练习 367
第11章 标准库 371
11.1 标准库结构 371
11.1.1 标准定义(<stddef.h>) 372
11.1.2 错误信息(<errno.h>) 372
11.2 几个已经介绍过的头文件 373
11.2.1 数学函数(<math.h>) 373
11.2.2 字符处理函数(<ctype.h>) 374
11.3 字符串函数(<string.h>) 375
11.3.1 一些字符串函数 375
11.3.2 存储区操作 378
11.4 功能函数(<stdlib.h>) 379
11.4.1 几个整数函数 380
11.4.2 数值转换 380
11.4.3 执行控制 381
11.4.4 与执行环境交互 381
11.4.5 常用函数bsearch和qsort 382
11.5 日期和时间(<time.h>) 383
11.6 实现特征(<limits.h>和<float.h>) 385
11.6.1 整数类型特征 385
11.6.2 浮点数类型特征 386
11.7 其他与输入输出有关的函数(<stdio.h>) 386
11.7.1 符号常量和类型 386
11.7.2 文件操作函数 387
11.7.3 流缓冲区操作函数 388
11.7.4 文件定位及定位函数 389
11.7.5 其他有关函数 390
11.7.6 采用va_list参数的输出函数 391
11.8 定义变长度参数表(<stdarg.h>) 392
11.9 非局部控制转移(<setjmp.h>) 395
11.10 调试断言和信号处理(<assert.h>和<signal.h>) 397
11.11 标准库的其他功能 398
11.11.1 本地化 398
11.11.2 多字节字符 400
本章讨论的重要概念 400
练习 400
附录A C语言运算符表 401
附录B C语言速查 403
附录C C99简介 409
进一步学习的建议 413
参考文献 416