第2版的目录 现代方法 C语言程序设计 (第二版的)
本文目录导航:
C语言程序设计:现代方法:第2版的目录
第1章 c语言概述11.1 c语言的历史11.1.1 起源11.1.2 标准化11.1.3 基于c的语言21.2 c语言的优缺点31.2.1 c语言的优点31.2.2 c语言的缺点31.2.3 高效地使用c语言4问与答5第2章 c语言基本概念72.1 编写一个简单的c程序7程序 显示双关语72.1.1 编译和链接82.1.2 集成开发环境82.2 简单程序的一般形式92.2.1 指令92.2.2 函数92.2.3 语句102.2.4 显示字符串10.2.3 注释112.4 变量和赋值122.4.1 类型122.4.2 声明132.4.3 赋值132.4.4 显示变量的值14程序 计算箱子的空间重量142.4.5 初始化152.4.6 显示表达式的值162.5 读入输入16程序 计算箱子的空间重量(改进版)162.6 定义常量的名字17程序 华氏温度转换为摄氏温度172.7 标识符182.8 c程序的书写规范19问与答21练习题23编程题24第3章 格式化输入/输出263.1 printf函数263.1.1 转换说明27程序 用printf函数格式化数283.1.2 转义序列283.2 scanf函数293.2.1 scanf函数的工作方法303.2.2 格式串中的普通字符313.2.3 易混淆的printf函数和scanf函数32程序 分数相加32问与答33练习题34编程题35第4章 表达式364.1 算术运算符36程序 计算通用产品代码的校验位384.2 赋值运算符394.2.1 简单赋值404.2.2 左值414.2.3 复合赋值414.3 自增运算符和自减运算符424.4 表达式求值434.5 表达式语句45问与答45练习题47编程题49第5章 选择语句505.1 逻辑表达式505.1.1 关系运算符505.1.2 判等运算符515.1.3 逻辑运算符515.2 if语句525.2.1 复合语句535.2.2 else子句535.2.3 级联式if语句54程序 计算股票经纪人的佣金555.2.4 “悬空else”的问题565.2.5 条件表达式575.2.6 c89中的布尔值585.2.7 c99中的布尔值 585.3 switch语句59程序 显示法定格式的日期61问与答62练习题65编程题67第6章 循环696.1 while语句69程序 显示平方表71程序 数列求和716.2 do语句72程序 计算整数的位数736.3 for语句736.3.1 for语句的惯用法746.3.2 在for语句中省略表达式756.3.3 c99中的for语句 756.3.4 逗号运算符76程序 显示平方表(改进版)776.4 退出循环786.4.1 break语句786.4.2 continue语句786.4.3 goto语句79程序 账簿结算806.5 空语句81问与答83练习题84编程题85第7章 基本类型887.1 整数类型887.1.1 c99中的整数类型 907.1.2 整数常量907.1.3 c99中的整数常量 917.1.4 整数溢出917.1.5 读/写整数91程序 数列求和(改进版)927.2 浮点类型937.2.1 浮点常量947.2.2 读/写浮点数947.3 字符类型947.3.1 字符操作957.3.2 有符号字符和无符号字符957.3.3 算术类型967.3.4 转义序列967.3.5 字符处理函数977.3.6 用scanf和printf读/写字符987.3.7 用getchar和putchar读/写字符98程序 确定消息的长度997.4 类型转换1007.4.1 常用算术转换1017.4.2 赋值过程中的转换1027.4.3 c99中的隐式转换 1037.4.4 强制类型转换1037.5 类型定义1057.5.1 类型定义的优点1057.5.2 类型定义和可移植性1057.6 sizeof运算符106问与答107练习题109编程题110第8章 数组1138.1 一维数组1138.1.1 数组下标113程序 数列反向1158.1.2 数组初始化1158.1.3 指定初始化式 116程序 检查数中重复出现的数字1168.1.4 对数组使用sizeof运算符117程序 计算利息1188.2 多维数组1198.2.1 多维数组初始化1208.2.2 常量数组121程序 发牌1218.3 c99中的变长数组 122问与答123练习题124编程题125第9章 函数1299.1 函数的定义和调用129程序 计算平均值129程序 显示倒计数130程序 显示双关语(改进版)1319.1.1 函数定义1329.1.2 函数调用133程序 判定素数1349.2 函数声明1359.3 实际参数1369.3.1 实际参数的转换1379.3.2 数组型实际参数1389.3.3 变长数组形式参数 1409.3.4 在数组参数声明中使用static 1419.3.5 复合字面量 1419.4 return语句1429.5 程序终止1439.6 递归144程序 快速排序146问与答147练习题150编程题153第10章 程序结构.1 局部变量.1.1 静态局部变量.1.2 形式参数.2 外部变量.2.1 示例:用外部变量实现栈.2.2 外部变量的利与弊157程序猜数.3 程序块.4 作用域.5 构建c程序163程序 给一手牌分类163问与答169练习题169编程题170第11章 指针.1 指针变量.2 取地址运算符和间接寻址运算符.2.1 取地址运算符.2.2 间接寻址运算符.3 指针赋值.4 指针作为参数176程序 找出数组中的最大元素和最小元素.5 指针作为返回值179问与答180练习题181编程题182第12章 指针和数组.1 指针的算术运算.1.1 指针加上整数.1.2 指针减去整数.1.3 两个指针相减.1.4 指针比较.1.5 指向复合常量的指针 .2 指针用于数组处理.3 用数组名作为指针188程序数列反向(改进版).3.1 数组型实际参数(改进版).3.2 用指针作为数组名.4 指针和多维数组.4.1 处理多维数组的元素.4.2 处理多维数组的行.4.3 处理多维数组的列.4.4 用多维数组名作为指针.5 c99中的指针和变长数组 193问与答194练习题195编程题197第13章 字符串.1 字符串字面量.1.1 字符串字面量中的转义序列.1.2 延续字符串字面量.1.3 如何存储字符串字面量.1.4 字符串字面量的操作.1.5 字符串字面量与字符常量.2 字符串变量.2.1 初始化字符串变量.2.2 字符数组与字符指针.3 字符串的读和写.3.1 用printf函数和puts函数写字符串.3.2 用scanf函数和gets函数读字符串.3.3 逐个字符读字符串.4 访问字符串中的字符.5 使用c语言的字符串库.5.1 strcpy函数.5.2 strlen函数.5.3 strcat函数.5.4 strcmp函数209程序显示一个月的提醒列表.6 字符串惯用法.6.1 搜索字符串的结尾.6.2 复制字符串.7 字符串数组214程序核对行星的名字217问与答218练习题220编程题222第14章 预处理器.1 预处理器的工作原理.2 预处理指令.3 宏定义.3.1 简单的宏.3.2 带参数的宏.3.3 #运算符.3.4 ##运算符.3.5 宏的通用属性.3.6 宏定义中的圆括号.3.7 创建较长的宏.3.8 预定义宏.3.9 c99中新增的预定义宏 .3.10 空的宏参数 .3.11 参数个数可变的宏 .3.12 __func__标识符 .4 条件编译.4.1 #if指令和#endif指令.4.2 defined运算符.4.3 #ifdef指令和#ifndef指令.4.4 #elif指令和#else指令.4.5 使用条件编译.5 其他指令.5.1 #error指令.5.2 #line指令.5.3 #pragma指令.5.4 _pragma运算符 242问与答243练习题245第15章 编写大型程序.1 源文件.2 头文件.2.1 #include指令.2.2 共享宏定义和类型定义.2.3 共享函数原型.2.4 共享变量声明.2.5 嵌套包含.2.6 保护头文件.2.7 头文件中的#error指令.3 把程序划分成多个文件254程序 文本格式化.4 构建多文件程序.4.1 makefile.4.2 链接期间的错误.4.3 重新构建程序.4.4 在程序外定义宏264问与答264练习题265编程题266第16章 结构、联合和枚举.1 结构变量.1.1 结构变量的声明.1.2 结构变量的初始化.1.3 指定初始化 .1.4 对结构的操作.2 结构类型.2.1 结构标记的声明.2.2 结构类型的定义.2.3 结构作为参数和返回值.2.4 复合字面量 .3 嵌套的数组和结构.3.1 嵌套的结构.3.2 结构数组.3.3 结构数组的初始化275程序维护零件数据库.4 联合.4.1 用联合来节省空间.4.2 用联合来构造混合的数据结构.4.3 为联合添加“标记字段”.5 枚举.5.1 枚举标记和类型名.5.2 枚举作为整数.5.3 用枚举声明“标记字段”286问与答287练习题289编程题293第17章 指针的高级应用.1 动态存储分配.1.1 内存分配函数.1.2 空指针.2 动态分配字符串.2.1 使用malloc函数为字符串分配内存.2.2 在字符串函数中使用动态存储分配.2.3 动态分配字符串的数组297程序显示一个月的提醒列表(改进版).3 动态分配数组.3.1 使用malloc函数为数组分配存储空间.3.2 calloc函数.3.3 realloc函数.4 释放存储空间.4.1 free函数.4.2 “悬空指针”问题.5 链表.5.1 声明结点类型.5.2 创建结点.5.3 -)运算符.5.4 在链表的开始处插入结点.5.5 搜索链表.5.6 从链表中删除结点.5.7 有序链表308程序维护零件数据库(改进版).6 指向指针的指针.7 指向函数的指针.7.1 函数指针作为参数.7.2 qsort函数.7.3 函数指针的其他用途316程序列三角函数表.8 受限指针 .9 灵活数组成员 319问与答320练习题323编程题325第18章 声明.1 声明的语法.2 存储类型.2.1 变量的性质.2.2 auto存储类型.2.3 static存储类型.2.4 extern存储类型.2.5 register存储类型.2.6 函数的存储类型.2.7 小结.3 类型限定符.4 声明符.4.1 解释复杂声明.4.2 使用类型定义来简化声明.5 初始化.6 内联函数 .6.1 内联定义.6.2 对内联函数的限制.6.3 在gcc中使用内联函数339问与答339练习题342第19章 程序设计.1 模块.1.1 内聚性与耦合性.1.2 模块的类型.2 信息隐藏.3 抽象数据类型.3.1 封装.3.2 不完整类型.4 栈抽象数据类型.4.1 为栈抽象数据类型定义接口.4.2 用定长数组实现栈抽象数据类型.4.3 改变栈抽象数据类型中数据项的类型.4.4 用动态数组实现栈抽象数据类型.4.5 用链表实现栈抽象数据类型.5 抽象数据类型的设计问题.5.1 命名惯例.5.2 错误处理.5.3 通用抽象数据类型.5.4 新语言中的抽象数据类型360问与答360练习题361编程题362第20章 底层程序设计.1 位运算符.1.1 移位运算符.1.2 按位求反运算符、按位与运算符、按位异或运算符和按位或运算符.1.3 用位运算符访问位.1.4 用位运算符访问位域366程序xor加密.2 结构中的位域.3 其他底层技术.3.1 定义依赖机器的类型.3.2 用联合提供数据的多个视角.3.3 将指针作为地址使用371程序查看内存单元.3.4 volatile类型限定符373问与答374练习题374编程题376第21章 标准库.1 标准库的使用.1.1 对标准库中所用名字的限制.1.2 使用宏隐藏的函数.2 c89标准库概述.3 c99标准库更新.4 (stddef.h):常用定义.5 (stdbool.h):布尔类型和值 381问与答382练习题382编程题383第22章 输入/输出.1 流.1.1 文件指针.1.2 标准流和重定向.1.3 文本文件与二进制文件.2 文件操作.2.1 打开文件.2.2 模.2.3 关闭文件.2.4 为打开的流附加文件.2.5 从命令行获取文件名389程序检查文件是否可以打开.2.6 临时文件.2.7 文件缓冲.2.8 其他文件操作.3 格式化的输入/输出.3.1 …printf函数.3.2 …printf转换说明.3.3 c99对…printf转换说明的修改 .3.4 …printf转换说明示例.3.5 …scanf函数.3.6 …scanf格式串.3.7 …scanf转换说明.3.8 c99对转换说明的改变 .3.9 scanf示例.3.10 检测文件末尾和错误条件.4 字符的输入/输出.4.1 输出函数.4.2 输入函数403程序复制文件.5 行的输入/输出.5.1 输出函数.5.2 输入函数.6 块的输入/输出.7 文件定位407程序修改零件记录文件.8 字符串的输入/输出.8.1 输出函数.8.2 输入函数410问与答411练习题414编程题416第23章 库对数值和字符数据的支持.1 (float.h):浮点类型的特性.2 (limits.h):整数类型的大小.3 (math.h):数学计算(c89).3.1 错误.3.2 三角函数.3.3 双曲函数.3.4 指数函数和对数函数.3.5 幂函数.3.6 就近取整函数、绝对值函数和取余函数.4 (math.h):数学计算(c99) .4.1 ieee浮点标准.4.2 类型.4.3 宏.4.4 错误.4.5 函数.4.6 分类宏.4.7 三角函数.4.8 双曲函数.4.9 指数函数和对数函数.4.10 幂函数和绝对值函数.4.11 误差函数和伽玛函数.4.12 就近取整函数.4.13 取余函数.4.14 操作函数.4.15 最大值函数、最小值函数和正差函数.4.16 浮点乘加.4.17 比较宏.5 (ctype.h):字符处理.5.1 字符分类函数435程序测试字符分类函数.5.2 字符大小写映射函数437程序测试大小写映射函数.6 (string.h):字符串处理.6.1 复制函数.6.2 拼接函数.6.3 比较函数.6.4 搜索函数.6.5 其他函数442问与答442练习题443编程题444第24章 错误处理.1 (assert.h):诊断.2 (errno.h):错误.3 (signal.h):信号处理.3.1 信号宏.3.2 signal函数.3.3 预定义的信号处理函数.3.4 raise函数450程序测试信号.4 (setjmp.h):非局部跳转452程序测试setjmp和longjmp452问与答453练习题454第25章 国际化特性.1 (locale.h):本地化.1.1 类别.1.2 setlocale函数.1.3 localeconv函数.2 多字节字符和宽字符.2.1 多字节字符.2.2 宽字符.2.3 统一码和通用字符集.2.4 统一码编码.2.5 多字节/宽字符转换函数.2.6 多字节/宽字符串转换函数.3 双字符和三字符.3.1 三字符.3.2 双字符.3.3 (iso646.h):拼写替换.4 通用字符名 .5 (wchar.h):扩展的多字节和宽字符实用工具 .5.1 流倾向.5.2 格式化宽字符输入/输出函数.5.3 宽字符输入/输出函数.5.4 通用的宽字符串实用工具.5.5 宽字符时间转换函数.5.6 扩展的多字节/宽字符转换实用工具.6 (wctype.h):宽字符分类和映射实用工具 .6.1 宽字符分类函数.6.2 可扩展的宽字符分类函数.6.3 宽字符大小写映射函数.6.4 可扩展的宽字符大小写映射函数478问与答479练习题479编程题480第26章 其他库函数.1 (stdarg.h):可变参数.1.1 调用带有可变参数列表的函数.1.2 v…printf函数.1.3 v…scanf函数 .2 (stdlib.h):通用的实用工具.2.1 数值转换函数485程序测试数值转换函数.2.2 伪随机序列生成函数488程序测试伪随机序列生成函数.2.3 与环境的通信.2.4 搜索和排序实用工具490程序确定航空里程.2.5 整数算术运算函数.3 (time.h):日期和时间.3.1 时间处理函数.3.2 时间转换函数495程序显示日期和时间498问与答500练习题501编程题502第27章 c99对数学计算的新增支持.1 (stdint.h):整数类型 .1.1 (stdint.h)类型.1.2 对指定宽度整数类型的限制.1.3 对其他整数类型的限制.1.4 用于整数常量的宏.2 (inttypes.h):整数类型的格式转换 .2.1 用于格式说明符的宏.2.2 用于最大宽度整数类型的函数.3 复数 .3.1 复数的定义.3.2 复数的算术运算.3.3 c99中的复数类型.3.4 复数的运算.3.5 复数类型的转换规则.4 (complex.h):复数算术运算 .4.1 (complex.h)宏.4.2 cx_limited_range编译提示.4.3 (complex.h)函数.4.4 三角函数.4.5 双曲函数.4.6 指数函数和对数函数.4.7 幂函数和绝对值函数.4.8 操作函数514程序求二次方程的根.5 (tgmath.h):泛型数学 .5.1 泛型宏.5.2 调用泛型宏.6 (fenv.h):浮点环境 .6.1 浮点状态标志和控制模.6.2 (fenv.h)宏.6.3 fenv_access编译提示.6.4 浮点异常函数.6.5 舍入函数.6.6 环境函数521问与答521练习题522编程题523附录a c语言运算符524附录b c99与c89的比较525附录c c89与经典c的比较529附录d 标准库函数532附录e ascii字符集569参考文献570索引573

C语言程序设计现代方法的介绍
《C语言程序设计:现代方法(第2版)》内容简介:时至今日,C语言仍然是计算机领域的通用语言之一,但今天的 C语言已经和最初的时候大不相同了。
《C语言程序设计:现代方法(第2版)》最主要的一个目的就是通过一种“现代方法”来介绍 C语言,书中强调标准 C,强调软件工程,不再强调“手工优化”。
这一版中紧密结合了 C99标准,并与 C89标准进行对照,补充了 C99中的最新特性。
《C语言程序设计:现代方法(第2版)》分为 C语言的基础特性、 C语言的高级特性、 C语言标准库和参考资料 4个部分。
每章末尾都有一个“问与答”小节给出一系列与该章内容相关的问题及答案,此外还包含适量的习题。
C语言程序设计:现代方法:第2版内容简介
在当今计算机领域,C语言依然保持着其普遍重要性,但它的面貌已经发生了显著变化。
《C语言程序设计:现代方法:第2版》这本书的核心在于以“现代方法”重新诠释C语言,它的焦点在于标准C,注重软件工程而非传统意义上的“手动优化”。
这一版本紧密衔接了C99标准,并与C89标准做了对比,突出了C99中的最新特性。
全书划分为四个部分:C语言的基础特性、C语言的高级特性、C语言标准库以及参考资料,详尽全面。
每一章的结尾部分,作者精心设计了一个“问与答”环节,针对本章内容提出了富有深度的问题,并附带详尽的答案,有助于读者理解和巩固所学知识。
此外,书中还包含了适量的习题,旨在通过实践提升读者的编程技能。
本书旨在为大学本科阶段的C语言教学提供教材支持,同时,其内容丰富,形式灵活,也非常适合作为其他相关课程的补充材料,无论是初学者还是进阶者,都能从中获益匪浅。