标题：组合数学（第4版）习题解答
图书信息
作者：卢华明
普通高等教育“十一五”国家级规划教材
图书详细信息：ISBN：9787302237433定价：33元印次：1-2装帧：平装印刷日期：2011-11-22
图书简介
组合数学是既古老而又年轻的一门数学分支，它的基本原理非常直观易懂。本书收集了1200多道组合数学题，涉及4部分内容： 一是加法法则、乘法法则与排列组合；二是序列、递推关系与母函数、Fibonacci数等；三是容斥原理、鸽巢原理、Ramsey数等；四是Polya定理。本书适合作为高等院校计算机及相关专业本科生的辅助教材，也可作为研究生的辅助教材，也可供广大科学工作者、工程技术人员参考。最后说明一下本书只涉及组合数学的部分核心内容，比如图论部分暂时放弃了。图论无疑属于组合数学，但因为它成长壮大，本身内容丰富，所以独立出去了，以后争取继续完成。
图书前言
语言程序设计（第2版）人类已经步入信息化的21世纪，信息时代的到来，使社会经济向知识经济发展。为了推进21世纪计算机基础教育改革，推进精品课程建设以及与之配套的精品教材建设，从素质教育的理念出发，结合信息化社会对高素质、复合型人才的需求，特出版此教材。此教材力求较为全面地介绍C语言的基本内容与程序设计思想。言是目前国内外广泛使用的程序设计语言之一 是国内外大学都在开设的重要的基础课之一。C语言功能丰富、表达能力强、使用方便灵活、程序执行效率高并且可移植性好；既具有高级语言的特点，又具有汇编语言的特点，具有较强的系统处理能力。它支持自顶向下逐步求精的程序设计技术，其函数式结构为实现程序的模块化设计提供了强有力的保障。因此，它被广泛应用于系统软件和应用软件的开发。本教材从C语言程序设计的基本原理及程序设计的基本思想出发，贯穿“基础-应用-专题”这一主线，紧扣基础，面向应用，循序渐进地引导读者学习程序设计的思想和方法。基础部分的主要内容包括程序设计中的基本概念与应用，如变量、数组、控制结构及判断结构等，并在掌握了这些基本概念与应用的基础上适时引入函数的结构与应用、指针的概念及其应用、算法设计与实现、结构型数据的应用及文件的操作等面向应用的知识点介绍，然后在上述知识点的基础上进一步介绍数据结构专题，包括链表、栈、队列和二叉树的概念与应用。为方便授课和学习，本教材还配套有电子教案和习题解析。本书的特点之一是通俗易懂，突出“三基”（基本概念、基本原理与基本应用）的介绍与应用。本书的特点之二是在介绍“算法设计与实现”这部分内容时，重点介绍经典的排序与查找的算法及其实现，同时通过几种不同算法的比较，讨论算法的效率及代码实现的效率。计算机程序设计，很大一部分工作是为了实现某一特定的模型或算法。本书通过介绍算法设计并通过计算机程序加以实现，可以使读者更好地学习程序设计的思想、体系结构和方法，尤其是优化的程序设计方法。本书的特点之三是介绍了数据结构的基本内容，如链表、栈、队列和二叉树的“三基”，将这些内容作为综合应用的专题，使读者从实际应用中对C语言程序设计的基本知识得以融会贯通和进一步提高。本书的特点之四是教材中有代码的详细注释。为了用最简洁的语言讲解代码结构及功能，本教材在例题代码中给出了详细的代码注释，以利于读者更好地理解代码，同时，教材中的所有代码均在TC 3.0下面完全通过调试。本书的特点之五是重点突出、难点分散。这样从学习者对知识的掌握角度来说是有利的，而且这样也有利于自学。本教材标有“?”的内容为选学内容，各学校可以根据自己的实际情况决定教材的学习内容。如果这些内容不作为教学内容学习的话，也不影响其他内容在知识点上的承接关系。本教材中将“编译预处理”内容放到附录中去，由于此部分的内容跨越了很多知识点，如果单独作为一章内容，那么只能将这部分内容放到较靠后的位置。但基础知识的学习中也牵涉编译预处理的内容，因此，将这部分内容放到附录中，可以根据需要及时查询。读者可以根据实际情况安排学习编译预处理内容的进度。本书可供高等院校、计算机水平考试培训、各类成人教育学校作为开设程序设计课程的教材，也可供计算机爱好者自学。
图书目录
第1章 C语言的基本概念1 1.1 程序设计语言的历史和发展1 1.2 程序设计过程中的几个基本概念21.2.1 程序21.2.2 程序设计21.2.3 算法31.2.4 数据结构3 1.3 软件工程的概念4 1.4 C语言的发展与特点41.4.1 C语言的发展和ANSI C标准41.4.2 C语言的特点5 1.5 C语言程序的基本标识符6 1.6 C程序的几个简单实例7 1.7 C程序的结构特点10 1.8 C语言程序的编译和执行11 1.9 习题12
第2章 C语言程序的基本数据类型及其运算13 2.1 C语言的数据类型132.1.1 数据类型的一般概念132.1.2 常量14 2.2 数据类型及变量172.2.1 基本数据类型172.2.2 变量及变量的定义172.2.3 变量的初始化182.2.4 数据类型转换19 2.3 运算符和表达式212.3.1 运算符和表达式概述212.3.2 赋值运算符和赋值表达式222.3.3 算术运算符和算术表达式232.3.4 关系运算符和关系表达式242.3.5 逻辑运算符和逻辑表达式252.3.6 条件运算符262.3.7 其他运算符27 2.4 位运算符282.4.1 按位取反运算符282.4.2 移位运算符282.4.3 按位“与”、按位“或”、按位“异或”29 2.5 C语言基本输入输出函数302.5.1 字符输入输出函数312.5.2 格式化输入输出函数32 2.6 习题37
第3章 基本控制结构及其应用39 3.1 算法及结构化程序设计393.1.1 算法及其特征393.1.2 算法的类型与结构41 3.2 顺序结构程序设计42 3.3 分支结构程序设计433.3.1 if 分支433.3.2 if-else分支433.3.3 多分支if-else if-else形式443.3.4 条件分支的嵌套453.3.5 开关分支46 3.4 循环结构程序设计503.4.1 while语句503.4.2 do-while语句503.4.3 for语句513.4.4 三种循环的比较523.4.5 多重循环523.4.6 循环和开关分支的中途退出533.4.7 goto语句543.4.8 结构化程序设计的注意事项55 3.5 结构化程序设计及应用举例57 3.6 习题58
第4章 数组及其应用62 4.1 一维数组624.1.1 一维数组的定义624.1.2 一维数组的初始化634.1.3 一维数组的引用644.1.4 一维数组的应用举例65 4.2 多维数组674.2.1 多维数组的定义674.2.2 多维数组的存储形式674.2.3 多维数组的引用684.2.4 多维数组的初始化684.2.5 数组应用举例70 4.3 字符型数组与字符串714.3.1 字符型数组的概念714.3.2 字符型数组的初始化724.3.3 字符型数组的输入输出734.3.4 字符型数组的应用举例74 4.4 综合应用举例75 4.5 习题77
第5章 函数及其应用79 5.1 函数的定义与调用795.1.1 C源程序的结构795.1.2 函数的定义805.1.3 函数的调用82 5.2 函数间的信息传递方式855.2.1 实参-形参之间的信息传递865.2.2 函数调用结果的返回89 5.3 函数与数组925.3.1 数组元素做实参925.3.2 一维数组名做实参925.3.3 多维数组名做参数945.3.4 字符数组做函数的参数95 5.4 递归函数与递归调用965.4.1 递归的概念965.4.2 递归程序的设计97 5.5 变量的存储类型及作用域985.5.1 auto型变量995.5.2 extern型变量995.5.3 静态变量102 5.6 习题104
第6章 指针107 6.1 指针的基本概念及定义方式1076.1.1 指针的基本概念1076.1.2 指针的定义1076.1.3 指针的初始化1086.1.4 指针运算符110 6.2 指针的运算1106.2.1 指针的算术运算1106.2.2 关系运算1126.2.3 指针的赋值运算112 6.3 指针与数组1126.3.1 指向一维数组的指针1136.3.2 指向多维数组的指针115 6.4 字符指针和字符串116 6.5 指针数组1186.5.1 指针数组的概念1186.5.2 指针数组的应用1196.5.3 指针数组在带形参的main函数中的应用120 6.6 指针在函数参数传递中的应用122 6.7 指针型函数1226.7.1 指针型函数的定义和引用1236.7.2 指针型函数的应用举例123 6.8 多级指针1246.8.1 多级指针的概念及定义1246.8.2 多级指针应用举例125 6.9 指向函数的指针1266.9.1 指向函数的指针的概念1266.9.2 指向函数的指针的应用127 6.10 动态指针1296.10.1 动态内存分配的概念129??6.10.2 动态内存分配的应用130 6.11 习题132
第7章 排序及查找算法及其实现134 7.1 排序概述1347.1.1 排序的概念1347.1.2 排序的定义1347.1.3 排序的方法135??7.1.4 排序效率135 7.2 冒泡排序法的设计及其实现1377.2.1 冒泡算法设计思想1377.2.2 冒泡算法的实现138 7.3 选择排序法的设计及其实现1397.3.1 选择排序法设计思想1397.3.2 选择排序法的实现140 7.4 插入排序法的设计及其实现1417.4.1 插入排序法设计思想1417.4.2 插入排序法的实现142 7.5 SHELL排序法的设计及其实现1437.5.1 SHELL排序法设计思想1437.5.2 SHELL排序法的实现144 7.6 字符串数组的排序设计及其实现1467.6.1 字符串数组的排序算法设计思想1467.6.2 字符串数组排序算法的实现147 7.7 查找概述148 7.8 顺序查找及其应用1487.8.1 顺序查找算法的设计思想1487.8.2 顺序查找算法的实现149 7.9 折半查找及其应用1507.9.1 折半查找算法的设计思想1507.9.2 折半查找算法的实现151 7.10 习题152
第8章 结构体、联合体和枚举153 8.1 结构体的说明和定义1538.1.1 结构体的概念1538.1.2 结构体的说明及结构体变量的定义154 8.2 结构体成员的引用与结构体变量的初始化1578.2.1 结构体成员的引用1578.2.2 结构体变量的初始化158 8.3 结构体数组1598.3.1 结构体数组的定义及初始化1598.3.2 结构体数组的应用举例159 8.4 结构体指针1618.4.1 结构体指针及其定义1618.4.2 通过指针引用结构体成员1628.4.3 结构体指针的应用举例163 8.5 结构体在函数间的传递1668.5.1 结构体变量的传递1668.5.2 结构体数组在函数间的传递169 8.6 结构体指针型和结构体型函数1708.6.1 结构体指针型函数1708.6.2 结构体型函数172 8.7 结构体嵌套1748.7.1 结构体嵌套的概念1748.7.2 嵌套结构体类型变量的引用1758.7.3 结构体嵌套应用举例176 8.8 联合体1778.8.1 联合体的说明及联合体变量的定义1778.8.2 使用联合体变量应注意的问题182 8.9 枚举类型1848.9.1 枚举类型数据的概念及其定义1848.9.2 枚举型变量的使用184 8.10 自定义类型186 8.10.1 自定义类型及其表示形式186 8.10.2 自定义类型的优点187 8.11 位字段结构体188 8.12 习题189
第9章 文件操作193 9.1 文件概述193 9.2 文件的基本操作1979.2.1 文件的打开1979.2.2 文件的关闭1989.2.3 文件的删除1989.2.4 文件的重命名1999.2.5 临时文件的创建199 9.3 文件的读写操作2009.3.1 文件的非格式化读写2009.3.2 文件的格式化写操作2069.3.3 文件的格式化读操作208 9.4 文件的定位2099.4.1 fgetpos函数2099.4.2 fsetpos函数2099.4.3 ftell函数2099.4.4 fseek函数2109.4.5 feof函数211 9.5 错误处理2119.5.1 ferror函数2119.5.2 perror函数211 9.6 习题212
??第10章 线性表及其应用218 10.1 线性表的基本概念218 10.2 结构简介21910.2.1 单链表22010.2.2 循环链表22810.2.3 双向链表229 10.3 线性表的应用22910.3.1 单链表的应用： 单链表归并问题22910.3.2 循环链表的应用： 求解约瑟夫问题231 10.4 习题232
??第11章 栈及其应用233 11.1 栈的定义及其基本操作233 11.2 栈的实现23411.2.1 栈的数组实现23411.2.2 栈的链式存储实现236 11.3 栈的应用23811.3.1 栈在进制转换中的应用23811.3.2 栈在递归中的应用241 11.4 习题243
??第12章 队列及其应用244 12.1 队列的定义及基本操作244 12.2 队列的实现24512.2.1 用循环数组实现队列24512.2.2 用链表实现队列248 12.3 队列的应用25112.3.1 打印杨辉三角形25112.3.2 舞伴问题254 12.4 习题258
??第13章 二叉树及其应用259 13.1 树的定义和基本术语25913.1.1 树的定义25913.1.2 树的基本术语260 13.2 二叉树的特点及其数学性质26113.2.1 二叉树的特点26113.2.2 二叉树的数学性质261 13.3 二叉树的基本操作及其实现26313.3.1 二叉树的基本操作26313.3.2 二叉树基本操作的实现263 13.4 二叉树的应用26813.4.1 二叉树的遍历26813.4.2 利用二叉树的遍历建立、打印二叉树27013.4.3 利用二叉树的遍历按树状打印二叉树273 13.5 习题275
附录A 预处理命令的应用276 A.1 预处理概述276 A.2 宏定义276A.2.1 无参宏定义276A.2.2 带参宏定义280 A.3 文件包含284 A.4 条件编译284A.4.1 第一种条件编译形式284A.4.2 第二种条件编译形式285A.4.3 第三种条件编译形式286
附录B Turbo C 3.0的上机过程288 B.1 文件的建立与保存288 B.2 文件的编辑289 B.3 编译连接290 B.4 程序的运行291
附录C Turbo C 3.0程序的调试292 C.1 程序的调试292C.1.1 有关调试的设置292C.1.2 设置断点及动态调试的基本操作293 C.2 程序调试实例295C.2.1 添加断点295C.2.2 观察变量296C.2.3 单步执行296C.2.4 观察调用关系297C.2.5 终止调试297C.2.6 条件断点297C.2.7 动态修改变量值298
附录D Turbo C 3.0部分库函数表299
附录E ASCII码表311
参考文献312
[1]