新概念C程序设计大学教程(第3版)

新概念C程序设计大学教程(第3版)
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2017-02
版次: 1
ISBN: 9787302439943
定价: 49.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 365页
字数: 561千字
正文语种: 简体中文
1人买过
  •   《新概念C程序设计大学教程(第3版)》是一本“以计算思维训练为核心,以能力培养为目标”的C语言程序设计教材,基于“程序设计 = 算法思维 + 语言艺术 + 工程规范”的知识和能力框架和“前期以培养解题思路为主,语法知识够用就行;后期补充必要的语法细节”的教学策略编写。全书共9单元可分为4个部分。   第1部分是针对C程序设计的初级训练:第1单元介绍进行C语言程序设计首先应当掌握的一些基本概念和方法;第2、3单元在第1单元的基础上介绍判断结构和重复结构,第4单元介绍穷举、迭代、递归和模拟,奠定算法基础。   第2部分是在第1部分的基础上进行数据类型的扩展:第5单元介绍数组,第6单元介绍3种可定制数据结构——构造体、共用体和枚举,第7单元介绍指针及其应用。   第3部分只有第8单元一单元,介绍分治、回溯、贪心策略和动态规划,作为算法设计进阶,可以使读者的程序设计能力提升到较高水平。   第4部分用第9单元一单元介绍一些可能用得着的有关内容,包括外部变量、内联函数、带参宏定义、文件和位操作。   这样的结构可以满足多种不同层次的教和学的需求,并兼顾自学。   作者在编写本书时力求概念准确、难点分散、例题经典、习题丰富、题型全面、注重效果,并以C99作为蓝本,可以作为高等学校各专业的新一代程序设计课程教材,也可供从事程序设计相关领域的人员自学或参考。   张基温,知名学者,计算机教育家,研究和教学领域涉及计算机科学与技术、信息管理、信息经济学、电子政务与电子商务、服务科学,发表论文百余篇,出版著作百余种;先后担任名古屋大学访问学者,山西财经大学、江南大学、华东政法大学、福建工程学院、晋城学院、广西职业技术学院等多所大学的专职、客座或兼职教授,北京大学博雅方略城市发展与信息化研究中心研究员,南京大学出版社总编顾问,太原高新技术区IT研究院实验室主任,山西省紧缺人才专家委员会副主任等职,中国信息经济学会常务理事,全国高等院校计算机基础教育研究会常务理事兼课程建设委员会副主任,中国计算机学会教育专业委员会委员,教育部NIT考试委员会委员,江苏省计算机基础教学指导委员会委员,山西省新世纪专家学者协会副会长;为清华大学出版社、电子工业出版社、中国水利水电出版社、南京大学出版社等出版社主编了信息管理与信息系统专业、计算机实验与实践、大学生信息素养等多个系列教材。在面向过程程序设计教学领域,从20世纪80年代初就开始进行有关研究和改革,尝试将软件工程方法和算法思想引入程序设计,倡导“程序设计 = 计算思维 + 语言艺术 + 工程规范”的程序设计教育理念,推行“以思维训练为核心,程序测试与程序设计并行”、“前期重在逻辑思维和方法训练、语法够用就行;后期进行语法细节补充”的程序设计课程教学方法。他主笔并与他人联合署名的《C语言程序设计教程》是*十一五规划教材,并于2007年被评为*精品教材。 第1单元 C程序启步 1 
    1.1 一个简单的计算器程序设计 1 
    1.1.1 用伪代码描述的简单计算器程序算法 1 
    1.1.2 将伪代码描述的算法逐步细化为C程序 2 
    1.1.3 C语言程序的编译、链接与执行 4 
    1.2 数据类型、标识符与声明 6 
    1.2.1 数据类型 6 
    1.2.2 C语言标识符规则 6 
    1.2.3 声明 7 
    1.3 表达式 8 
    1.3.1 字面量 8 
    1.3.2 数据实体 8 
    1.3.3 含有操作符的表达式及其求值规则 10 
    1.3.4 C语言的实现定义行为和未定义行为 13 
    1.4 函数 13 
    1.4.1 用函数组织程序 13 
    1.4.2 函数定义、函数调用与函数返回 15 
    1.4.3 函数声明 16 
    1.4.4 main()函数 17 
    1.4.5 库函数与头文件 17 
    1.4.6 printf()函数的基本用法 18 
    1.4.7 scanf()函数的基本用法 19 
    1.5 程序测试 22 
    1.5.1 程序中的语法错误和逻辑错误 22 
    1.5.2 程序运行中的异常与错误 22 
    1.5.3 程序测试及其观点 22 
    1.5.4 程序的静态测试与动态测试 23 
    1.5.5 设计用户友好的程序 23 
    1.6 知识链接A:整数类型 24 
    1.6.1 有符号整数类型与无符号整数类型 24 
    1.6.2 标准整数类型与扩展整数类型 25 
    1.6.3 宏与整数类型的极值宏 26 
    1.6.4 整数常量使用的3种进制 27 
    1.6.5 整数常量的标识 27 
    1.7 知识链接B:浮点类型 28 
    1.7.1 浮点类型的值的特性:取值范围与精度 28 
    1.7.2 浮点数据的舍入模式 29 
    1.7.3 浮点类型数据的操作限制 30 
    1.7.4 浮点类型常量的书写格式 30 
    1.7.5 _Complex类型和_Imaginary类型 31 
    1.8 知识链接C:字符类型 31 
    1.8.1 字符编码概述 31 
    1.8.2 char类型的基本特点 32 
    1.8.3 转义字符 33 
    1.8.4 用scanf()和printf()输入与输出字符 33 
    1.8.5 用getchar()和putchar()输入与输出字符 34 
    习题1 35 
    第2单元 选择程序设计 42 
    2.1 可选择计算类型的计算器程序算法分析 42 
    2.1.1 粗略算法分析 42 
    2.1.2 计算函数calculate()的算法分析 43 
    2.1.3 判等操作符与关系操作符 44 
    2.2 if-else型选择结构 44 
    2.2.1 用if-else实现的calculate()函数 44 
    2.2.2 if-else结构的特点 45 
    2.2.3 if-else if结构 46 
    2.2.4 瘸腿if-else嵌套结构 47 
    2.2.5 逻辑操作符与逻辑表达式 48 
    2.2.6 条件表达式 49 
    2.2.7 良好的程序书写风格 50 
    2.3 选择结构的测试 51 
    2.3.1 白箱测试法 51 
    2.3.2 使用double类型数据的calculate()代码 52 
    2.3.3 等价分类法 53 
    2.4 switch型选择结构 56 
    2.4.1 基于整数值匹配的选择结构——switch结构 56 
    2.4.2 一个字符分类程序 57 
    2.4.3 用switch结构实现的calculate()函数 59 
    2.4.4 switch结构与if-else结构的比较 60 
    2.5 知识链接D:变量的访问属性 61 
    2.5.1 变量的生存期与标识符的作用域 61 
    2.5.2 局部变量 63 
    2.6 知识链接E:#include指令与const限定符 66 
    2.6.1 #define指令 66 
    2.6.2 const限定符 67 
    2.7 知识链接F:左值表达式与右值表达式 68 
    2.7.1 左值表达式与右值表达式的概念 69 
    2.7.2 左值表达式的应用 70 
    习题2 71 
    第3单元 重复程序设计 82 
    3.1 可连续计算的计算器算法分析 82 
    3.1.1 初步算法 82 
    3.1.2 算法细化 82 
    3.1.3 重复结构的C语言实现 83 
    3.2 while结构 83 
    3.2.1 while结构的基本原理 83 
    3.2.2 采用while结构的可连续型计算器主函数 84 
    3.2.3 逗号操作符 85 
    3.3 do-while结构 86 
    3.3.1 do-while结构的基本原理 86 
    3.3.2 采用do-while结构的可连续型计算器主函数 86 
    3.4 for结构 87 
    3.4.1 for结构的基本原理 87 
    3.4.2 采用for结构的可连续型计算器主函数 87 
    3.4.3 计数型重复结构 89 
    3.4.4 复合赋值操作符与增值、自减操作符 93 
    3.5 重复结构的程序测试 94 
    3.5.1 基于路径覆盖的重复结构测试 94 
    3.5.2 边值分析法与重复结构测试 94 
    3.5.3 基于因果分析的程序测试 96 
    3.6 break与continue 98 
    3.6.1 break与continue语法概要 98 
    3.6.2 实例:求素数 99 
    3.7 知识链接G:表达式的副作用与序列点 101 
    3.7.1 表达式的副作用 101 
    3.7.2 序列点及其对表达式求值顺序的影响 102 
    3.7.3 副作用编程对策 104 
    3.8 知识链接H:算术数据类型转换 105 
    3.8.1 算术表达式中的数据类型转换 105 
    3.8.2 普通算术转换中的“提升拉齐”规则 105 
    3.8.3 传送转换中的数据类型转换 107 
    3.8.4 数据的显式类型转换 108 
    3.8.5 数据类型转换风险 109 
    习题3 113 
    第4单元 算法基础 121 
    4.1 穷举 121 
    4.1.1 搬砖问题 122 
    4.1.2 推断名次 124 
    习题4.1 128 
    4.2 迭代与递推 132 
    4.2.1 用二分迭代法求方程在指定区间的根 133 
    4.2.2 猴子吃桃子问题 136 
    4.2.3 用辗转相除法求两个正整数的*大公因子 138 
    习题4.2 141 
    4.3 递归 144 
    4.3.1 阶乘的递归计算 144 
    4.3.2 汉诺塔 147 
    4.3.3 台阶问题 150 
    习题4.3 151 
    4.4 模拟算法 152 
    4.4.1 产品随机抽样 153 
    4.4.2 用蒙特卡洛法求(的近似值 156 
    4.4.3 事件步长法——中子扩散问题 157 
    4.4.4 时间步长法——盐水池问题 159 
    习题4.4 163 
    第5单元 数组 166 
    5.1 一维数组 166 
    5.1.1 数组类型的特征 166 
    5.1.2 数组的定义 167 
    5.1.3 数组的初始化 168 
    5.1.4 下标变量 169 
    5.1.5 变长数组与常量数组 170 
    5.2 排序与查找 171 
    5.2.1 直接选择排序 171 
    5.2.2 冒泡排序 173 
    5.2.3 二分查找 176 
    5.3 二维数组 177 
    5.3.1 二维数组的概念 177 
    5.3.2 二维数组的初始化 178 
    5.3.3 访问二维数组元素 180 
    5.4 字符串 181 
    5.4.1 字符串字面量 181 
    5.4.2 字符数组与C字符串变量 182 
    5.4.3 字符串的输入与输出 183 
    5.4.4 字符串操作的库函数 186 
    习题5 189 
    第6单元 可定制数据类型 195 
    6.1 构造体类型 195 
    6.1.1 构造体类型的特征与定制 195 
    6.1.2 用typedef定义类型的别名 196 
    6.1.3 构造体变量 197 
    6.1.4 构造体变量的分量及其操作 200 
    6.1.5 构造体数组 201 
    6.1.6 复合字面量 204 
    6.2 共用体类型 205 
    6.2.1 共用体类型的定制及其变量的定义 205 
    6.2.2 共用体类型与构造体类型的比较 206 
    6.2.3 共用体变量的应用举例 208 
    6.3 枚举类型 210 
    6.3.1 枚举类型及其定义 210 
    6.3.2 枚举变量及其声明 211 
    6.3.3 对枚举变量和枚举元素的操作 211 
    6.3.4 用枚举为类提供整型符号常量名称 212 
    习题6 212 
    第7单元 指针 220 
    7.1 指针类型与指针变量 220 
    7.1.1 指针及其声明 220 
    7.1.2 同类型指针间的赋值与判等操作 221 
    7.1.3 指针的递引用 223 
    7.1.4 void指针 224 
    7.1.5 用const限定指针 224 
    习题7.1 225 
    7.2 数组与指针 230 
    7.2.1 数组名具有退化的左值性 230 
    7.2.2 下标表达式的指针性质 231 
    7.2.3 指针与字符串 233 
    7.2.4 二维数组与指针 235 
    习题7.2 237 
    7.3 函数与指针 243 
    7.3.1 指针作为函数参数 243 
    7.3.2 带参主函数 250 
    7.3.3 返回指针值的函数 251 
    7.3.4 函数类型与指向函数的指针 252 
    习题7.3 258 
    7.4 指向构造体的指针与链表 262 
    7.4.1 指向构造体类型变量的指针 262 
    7.4.2 链表及其特点 263 
    7.4.3 构建链表 264 
    习题7.4 266 
    7.5 动态存储分配 270 
    7.5.1 申请需要的存储空间 270 
    7.5.2 释放一个指针指向的存储空间 272 
    7.5.3 修改一个指针指向的存储空间大小 273 
    7.5.4 构建动态链表 273 
    7.5.5 带有弹性数组成员的构造体 277 
    习题7.5 278 
    第8单元 算法设计进阶* 280 
    8.1 分治策略 280 
    8.1.1 快速排序 280 
    8.1.2 自行车带人问题 283 
    习题8.1 286 
    8.2 回溯策略 288 
    8.2.1 迷宫问题 289 
    8.2.2 八皇后问题 292 
    习题8.2 294 
    8.3 贪心策略 296 
    8.3.1 旅行费用问题 296 
    8.3.2 删数问题 299 
    习题8.3 301 
    8.4 动态规划 303 
    8.4.1 动态规划概述 303 
    8.4.2 点数值三角形的*优路径 305 
    8.4.3 背包问题 307 
    习题8.4 311 
    第9单元 语海拾贝 314 
    9.1 外部变量 314 
    9.1.1 外部变量及其定义 314 
    9.1.2 外部变量的链接性 314 
    9.1.3 外部变量的风险 319 
    9.2 带参宏 319 
    9.2.1 带参宏的基本定义格式 319 
    9.2.2 使用带参宏的注意事项 320 
    9.2.3 带参宏与函数的比较 321 
    9.3 内联函数 322 
    9.3.1 内联函数的概念 322 
    9.3.2 内联函数的定义 323 
    9.3.3 内联函数的限制 323 
    9.4 数据文件 324 
    9.4.1 数据文件及其分类 324 
    9.4.2 FILE类型及其指针 325 
    9.4.3 数据文件操作的一般过程 326 
    9.4.4 程序示例 330 
    9.5 位操作与位段 331 
    9.5.1 按位逻辑运算 332 
    9.5.2 移位运算 333 
    9.5.3 位段 334 
    习题9 336 
    附录A C语言运算符的优先级和结合方向 344 
    附录B C语言的关键字 345 
    附录C 格式化输出函数printf()的格式 346 
    C.1 printf()格式参数的结构 346 
    C.2 printf()格式符 346 
    C.3 长度修饰符 347 
    C.4 域宽与精度说明 348 
    C.5 格式前缀修饰符 348 
    附录D 格式化输入函数scanf()的格式 349 
    D.1 scanf()指针参数 349 
    D.2 scanf()格式参数的结构 349 
    D.2.1 格式参数字符串的结构 349 
    D.2.2 基本格式符和长度修正 349 
    D.2.3 字段宽度 350 
    D.3 scanf()的停止与返回 351 
    D.4 数值数据的输入控制 351 
    D.5 字符型数据的输入控制 351 
    D.5.1 在格式字段前添加空格使格式字段可以跳过空白字符 351 
    D.5.2 用扫描集控制字符数组的读入 351 
    附录E 编译预处理命令 352 
    E.1 宏定义 352 
    E.2 文件包含 352 
    E.3 条件编译 352 
    附录F C标准库头文件 353 
    附录G C语言常用的标准库函数 354 
    G.1 数学函数 354 
    G.2 字符函数和字符串函数 355 
    G.3 输入与输出函数 356 
    G.4 动态内存分配函数 357 
    G.5 退出程序函数 358 
    G.6 数值转换函数 358 
    G.7 时间和日期函数 358 
    附录H C99、C89与K&R C 主要内容的比较 360 
    参考文献 361
  • 内容简介:
      《新概念C程序设计大学教程(第3版)》是一本“以计算思维训练为核心,以能力培养为目标”的C语言程序设计教材,基于“程序设计 = 算法思维 + 语言艺术 + 工程规范”的知识和能力框架和“前期以培养解题思路为主,语法知识够用就行;后期补充必要的语法细节”的教学策略编写。全书共9单元可分为4个部分。   第1部分是针对C程序设计的初级训练:第1单元介绍进行C语言程序设计首先应当掌握的一些基本概念和方法;第2、3单元在第1单元的基础上介绍判断结构和重复结构,第4单元介绍穷举、迭代、递归和模拟,奠定算法基础。   第2部分是在第1部分的基础上进行数据类型的扩展:第5单元介绍数组,第6单元介绍3种可定制数据结构——构造体、共用体和枚举,第7单元介绍指针及其应用。   第3部分只有第8单元一单元,介绍分治、回溯、贪心策略和动态规划,作为算法设计进阶,可以使读者的程序设计能力提升到较高水平。   第4部分用第9单元一单元介绍一些可能用得着的有关内容,包括外部变量、内联函数、带参宏定义、文件和位操作。   这样的结构可以满足多种不同层次的教和学的需求,并兼顾自学。   作者在编写本书时力求概念准确、难点分散、例题经典、习题丰富、题型全面、注重效果,并以C99作为蓝本,可以作为高等学校各专业的新一代程序设计课程教材,也可供从事程序设计相关领域的人员自学或参考。
  • 作者简介:
      张基温,知名学者,计算机教育家,研究和教学领域涉及计算机科学与技术、信息管理、信息经济学、电子政务与电子商务、服务科学,发表论文百余篇,出版著作百余种;先后担任名古屋大学访问学者,山西财经大学、江南大学、华东政法大学、福建工程学院、晋城学院、广西职业技术学院等多所大学的专职、客座或兼职教授,北京大学博雅方略城市发展与信息化研究中心研究员,南京大学出版社总编顾问,太原高新技术区IT研究院实验室主任,山西省紧缺人才专家委员会副主任等职,中国信息经济学会常务理事,全国高等院校计算机基础教育研究会常务理事兼课程建设委员会副主任,中国计算机学会教育专业委员会委员,教育部NIT考试委员会委员,江苏省计算机基础教学指导委员会委员,山西省新世纪专家学者协会副会长;为清华大学出版社、电子工业出版社、中国水利水电出版社、南京大学出版社等出版社主编了信息管理与信息系统专业、计算机实验与实践、大学生信息素养等多个系列教材。在面向过程程序设计教学领域,从20世纪80年代初就开始进行有关研究和改革,尝试将软件工程方法和算法思想引入程序设计,倡导“程序设计 = 计算思维 + 语言艺术 + 工程规范”的程序设计教育理念,推行“以思维训练为核心,程序测试与程序设计并行”、“前期重在逻辑思维和方法训练、语法够用就行;后期进行语法细节补充”的程序设计课程教学方法。他主笔并与他人联合署名的《C语言程序设计教程》是*十一五规划教材,并于2007年被评为*精品教材。
  • 目录:
    第1单元 C程序启步 1 
    1.1 一个简单的计算器程序设计 1 
    1.1.1 用伪代码描述的简单计算器程序算法 1 
    1.1.2 将伪代码描述的算法逐步细化为C程序 2 
    1.1.3 C语言程序的编译、链接与执行 4 
    1.2 数据类型、标识符与声明 6 
    1.2.1 数据类型 6 
    1.2.2 C语言标识符规则 6 
    1.2.3 声明 7 
    1.3 表达式 8 
    1.3.1 字面量 8 
    1.3.2 数据实体 8 
    1.3.3 含有操作符的表达式及其求值规则 10 
    1.3.4 C语言的实现定义行为和未定义行为 13 
    1.4 函数 13 
    1.4.1 用函数组织程序 13 
    1.4.2 函数定义、函数调用与函数返回 15 
    1.4.3 函数声明 16 
    1.4.4 main()函数 17 
    1.4.5 库函数与头文件 17 
    1.4.6 printf()函数的基本用法 18 
    1.4.7 scanf()函数的基本用法 19 
    1.5 程序测试 22 
    1.5.1 程序中的语法错误和逻辑错误 22 
    1.5.2 程序运行中的异常与错误 22 
    1.5.3 程序测试及其观点 22 
    1.5.4 程序的静态测试与动态测试 23 
    1.5.5 设计用户友好的程序 23 
    1.6 知识链接A:整数类型 24 
    1.6.1 有符号整数类型与无符号整数类型 24 
    1.6.2 标准整数类型与扩展整数类型 25 
    1.6.3 宏与整数类型的极值宏 26 
    1.6.4 整数常量使用的3种进制 27 
    1.6.5 整数常量的标识 27 
    1.7 知识链接B:浮点类型 28 
    1.7.1 浮点类型的值的特性:取值范围与精度 28 
    1.7.2 浮点数据的舍入模式 29 
    1.7.3 浮点类型数据的操作限制 30 
    1.7.4 浮点类型常量的书写格式 30 
    1.7.5 _Complex类型和_Imaginary类型 31 
    1.8 知识链接C:字符类型 31 
    1.8.1 字符编码概述 31 
    1.8.2 char类型的基本特点 32 
    1.8.3 转义字符 33 
    1.8.4 用scanf()和printf()输入与输出字符 33 
    1.8.5 用getchar()和putchar()输入与输出字符 34 
    习题1 35 
    第2单元 选择程序设计 42 
    2.1 可选择计算类型的计算器程序算法分析 42 
    2.1.1 粗略算法分析 42 
    2.1.2 计算函数calculate()的算法分析 43 
    2.1.3 判等操作符与关系操作符 44 
    2.2 if-else型选择结构 44 
    2.2.1 用if-else实现的calculate()函数 44 
    2.2.2 if-else结构的特点 45 
    2.2.3 if-else if结构 46 
    2.2.4 瘸腿if-else嵌套结构 47 
    2.2.5 逻辑操作符与逻辑表达式 48 
    2.2.6 条件表达式 49 
    2.2.7 良好的程序书写风格 50 
    2.3 选择结构的测试 51 
    2.3.1 白箱测试法 51 
    2.3.2 使用double类型数据的calculate()代码 52 
    2.3.3 等价分类法 53 
    2.4 switch型选择结构 56 
    2.4.1 基于整数值匹配的选择结构——switch结构 56 
    2.4.2 一个字符分类程序 57 
    2.4.3 用switch结构实现的calculate()函数 59 
    2.4.4 switch结构与if-else结构的比较 60 
    2.5 知识链接D:变量的访问属性 61 
    2.5.1 变量的生存期与标识符的作用域 61 
    2.5.2 局部变量 63 
    2.6 知识链接E:#include指令与const限定符 66 
    2.6.1 #define指令 66 
    2.6.2 const限定符 67 
    2.7 知识链接F:左值表达式与右值表达式 68 
    2.7.1 左值表达式与右值表达式的概念 69 
    2.7.2 左值表达式的应用 70 
    习题2 71 
    第3单元 重复程序设计 82 
    3.1 可连续计算的计算器算法分析 82 
    3.1.1 初步算法 82 
    3.1.2 算法细化 82 
    3.1.3 重复结构的C语言实现 83 
    3.2 while结构 83 
    3.2.1 while结构的基本原理 83 
    3.2.2 采用while结构的可连续型计算器主函数 84 
    3.2.3 逗号操作符 85 
    3.3 do-while结构 86 
    3.3.1 do-while结构的基本原理 86 
    3.3.2 采用do-while结构的可连续型计算器主函数 86 
    3.4 for结构 87 
    3.4.1 for结构的基本原理 87 
    3.4.2 采用for结构的可连续型计算器主函数 87 
    3.4.3 计数型重复结构 89 
    3.4.4 复合赋值操作符与增值、自减操作符 93 
    3.5 重复结构的程序测试 94 
    3.5.1 基于路径覆盖的重复结构测试 94 
    3.5.2 边值分析法与重复结构测试 94 
    3.5.3 基于因果分析的程序测试 96 
    3.6 break与continue 98 
    3.6.1 break与continue语法概要 98 
    3.6.2 实例:求素数 99 
    3.7 知识链接G:表达式的副作用与序列点 101 
    3.7.1 表达式的副作用 101 
    3.7.2 序列点及其对表达式求值顺序的影响 102 
    3.7.3 副作用编程对策 104 
    3.8 知识链接H:算术数据类型转换 105 
    3.8.1 算术表达式中的数据类型转换 105 
    3.8.2 普通算术转换中的“提升拉齐”规则 105 
    3.8.3 传送转换中的数据类型转换 107 
    3.8.4 数据的显式类型转换 108 
    3.8.5 数据类型转换风险 109 
    习题3 113 
    第4单元 算法基础 121 
    4.1 穷举 121 
    4.1.1 搬砖问题 122 
    4.1.2 推断名次 124 
    习题4.1 128 
    4.2 迭代与递推 132 
    4.2.1 用二分迭代法求方程在指定区间的根 133 
    4.2.2 猴子吃桃子问题 136 
    4.2.3 用辗转相除法求两个正整数的*大公因子 138 
    习题4.2 141 
    4.3 递归 144 
    4.3.1 阶乘的递归计算 144 
    4.3.2 汉诺塔 147 
    4.3.3 台阶问题 150 
    习题4.3 151 
    4.4 模拟算法 152 
    4.4.1 产品随机抽样 153 
    4.4.2 用蒙特卡洛法求(的近似值 156 
    4.4.3 事件步长法——中子扩散问题 157 
    4.4.4 时间步长法——盐水池问题 159 
    习题4.4 163 
    第5单元 数组 166 
    5.1 一维数组 166 
    5.1.1 数组类型的特征 166 
    5.1.2 数组的定义 167 
    5.1.3 数组的初始化 168 
    5.1.4 下标变量 169 
    5.1.5 变长数组与常量数组 170 
    5.2 排序与查找 171 
    5.2.1 直接选择排序 171 
    5.2.2 冒泡排序 173 
    5.2.3 二分查找 176 
    5.3 二维数组 177 
    5.3.1 二维数组的概念 177 
    5.3.2 二维数组的初始化 178 
    5.3.3 访问二维数组元素 180 
    5.4 字符串 181 
    5.4.1 字符串字面量 181 
    5.4.2 字符数组与C字符串变量 182 
    5.4.3 字符串的输入与输出 183 
    5.4.4 字符串操作的库函数 186 
    习题5 189 
    第6单元 可定制数据类型 195 
    6.1 构造体类型 195 
    6.1.1 构造体类型的特征与定制 195 
    6.1.2 用typedef定义类型的别名 196 
    6.1.3 构造体变量 197 
    6.1.4 构造体变量的分量及其操作 200 
    6.1.5 构造体数组 201 
    6.1.6 复合字面量 204 
    6.2 共用体类型 205 
    6.2.1 共用体类型的定制及其变量的定义 205 
    6.2.2 共用体类型与构造体类型的比较 206 
    6.2.3 共用体变量的应用举例 208 
    6.3 枚举类型 210 
    6.3.1 枚举类型及其定义 210 
    6.3.2 枚举变量及其声明 211 
    6.3.3 对枚举变量和枚举元素的操作 211 
    6.3.4 用枚举为类提供整型符号常量名称 212 
    习题6 212 
    第7单元 指针 220 
    7.1 指针类型与指针变量 220 
    7.1.1 指针及其声明 220 
    7.1.2 同类型指针间的赋值与判等操作 221 
    7.1.3 指针的递引用 223 
    7.1.4 void指针 224 
    7.1.5 用const限定指针 224 
    习题7.1 225 
    7.2 数组与指针 230 
    7.2.1 数组名具有退化的左值性 230 
    7.2.2 下标表达式的指针性质 231 
    7.2.3 指针与字符串 233 
    7.2.4 二维数组与指针 235 
    习题7.2 237 
    7.3 函数与指针 243 
    7.3.1 指针作为函数参数 243 
    7.3.2 带参主函数 250 
    7.3.3 返回指针值的函数 251 
    7.3.4 函数类型与指向函数的指针 252 
    习题7.3 258 
    7.4 指向构造体的指针与链表 262 
    7.4.1 指向构造体类型变量的指针 262 
    7.4.2 链表及其特点 263 
    7.4.3 构建链表 264 
    习题7.4 266 
    7.5 动态存储分配 270 
    7.5.1 申请需要的存储空间 270 
    7.5.2 释放一个指针指向的存储空间 272 
    7.5.3 修改一个指针指向的存储空间大小 273 
    7.5.4 构建动态链表 273 
    7.5.5 带有弹性数组成员的构造体 277 
    习题7.5 278 
    第8单元 算法设计进阶* 280 
    8.1 分治策略 280 
    8.1.1 快速排序 280 
    8.1.2 自行车带人问题 283 
    习题8.1 286 
    8.2 回溯策略 288 
    8.2.1 迷宫问题 289 
    8.2.2 八皇后问题 292 
    习题8.2 294 
    8.3 贪心策略 296 
    8.3.1 旅行费用问题 296 
    8.3.2 删数问题 299 
    习题8.3 301 
    8.4 动态规划 303 
    8.4.1 动态规划概述 303 
    8.4.2 点数值三角形的*优路径 305 
    8.4.3 背包问题 307 
    习题8.4 311 
    第9单元 语海拾贝 314 
    9.1 外部变量 314 
    9.1.1 外部变量及其定义 314 
    9.1.2 外部变量的链接性 314 
    9.1.3 外部变量的风险 319 
    9.2 带参宏 319 
    9.2.1 带参宏的基本定义格式 319 
    9.2.2 使用带参宏的注意事项 320 
    9.2.3 带参宏与函数的比较 321 
    9.3 内联函数 322 
    9.3.1 内联函数的概念 322 
    9.3.2 内联函数的定义 323 
    9.3.3 内联函数的限制 323 
    9.4 数据文件 324 
    9.4.1 数据文件及其分类 324 
    9.4.2 FILE类型及其指针 325 
    9.4.3 数据文件操作的一般过程 326 
    9.4.4 程序示例 330 
    9.5 位操作与位段 331 
    9.5.1 按位逻辑运算 332 
    9.5.2 移位运算 333 
    9.5.3 位段 334 
    习题9 336 
    附录A C语言运算符的优先级和结合方向 344 
    附录B C语言的关键字 345 
    附录C 格式化输出函数printf()的格式 346 
    C.1 printf()格式参数的结构 346 
    C.2 printf()格式符 346 
    C.3 长度修饰符 347 
    C.4 域宽与精度说明 348 
    C.5 格式前缀修饰符 348 
    附录D 格式化输入函数scanf()的格式 349 
    D.1 scanf()指针参数 349 
    D.2 scanf()格式参数的结构 349 
    D.2.1 格式参数字符串的结构 349 
    D.2.2 基本格式符和长度修正 349 
    D.2.3 字段宽度 350 
    D.3 scanf()的停止与返回 351 
    D.4 数值数据的输入控制 351 
    D.5 字符型数据的输入控制 351 
    D.5.1 在格式字段前添加空格使格式字段可以跳过空白字符 351 
    D.5.2 用扫描集控制字符数组的读入 351 
    附录E 编译预处理命令 352 
    E.1 宏定义 352 
    E.2 文件包含 352 
    E.3 条件编译 352 
    附录F C标准库头文件 353 
    附录G C语言常用的标准库函数 354 
    G.1 数学函数 354 
    G.2 字符函数和字符串函数 355 
    G.3 输入与输出函数 356 
    G.4 动态内存分配函数 357 
    G.5 退出程序函数 358 
    G.6 数值转换函数 358 
    G.7 时间和日期函数 358 
    附录H C99、C89与K&R C 主要内容的比较 360 
    参考文献 361
查看详情