后一只猴子,则该猴子为大王。 ? 功能要求:
输入数据:输入m,n m,n 为整数,n 输出形式:中文提示按照m个猴子,数n 个数的方法,输出为大王的猴子是几号 ,建立一个函数来实现此功能。 ? 编程提示: 用循环队列实现。 题目7 文本文件单词的检索与计数 ? 问题描述: 建立一个文本文件,每个单词不包含空格且不跨行,单词由字符序列构成且区分大小写;统计给定单词在文本文件中出现的次数;检索输出某个单词出现在文本中的行号、在该行中出现的次数以及位置。 ? 功能要求: 1) 建立文本文件,文件名由用户用键盘输入; 2) 给定单词的计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数; 3) 检索给定单词,输入一个单词,检索并输出该单词所在的行号、该行中出现的次数 以及在该行中的相应位置。 ? 编程提示: 关键是对字符数据结构(字符串)进行操作。 题目8 小型文本编辑器 ? 问题描述: 实现一个类似于记事本的文本编辑器。 ? 功能要求: 1)具有图形菜单界面; 2)查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除 3)可正确存盘、取盘; 4)正确显示总行数。 ? 编程提示: 关键是对字符数据结构(字符串)进行操作。 题目9 校园导航问题 ? 问题描述: 设计一个校园导游程序,为来访的客人提供各种信息查询服务。 ? 功能要求: (1) 设计城市学院的校园平面图,所含景点不少于10个。以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。 (2) 为来访客人提供图中任意景点相关信息的查询。 (3) 为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。(并且景点不重复) ? 编程提示: 本题是求某个源点到其余顶点之间的最短路径。可由Dijkstra算法求得。 实训10 排序问题 ? 问题描述: 利用随机函数产生N个随机整数(2000以上),对这些数进行多种方法进行排序。 ? 功能要求: 1)至少采用三种方法实现上述问题求解(提示,可采用的方法有插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序)。并把排序后的结果保存在不同的文件中。 2)统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法。 3)如果采用4种或4种以上的方法者,可适当加分。 ? 编程提示: 本题的关键是: 1)随机数产生函数; 2)程序运行时间统计函数。 题目11 男女搭配问题 ? 问题描述: 一班有m个女生,有n个男生(m不等于n),现要开一个舞会。男女生分别编号坐在舞池的两边的椅子上,每曲开始时,依次从男生和女生中各出一人配对跳舞,本曲没成功配对者坐着等待下一曲找舞伴。 ? 功能要求: 请设计一系统模拟动态地显示出上述过程,要求如下: 1)输出每曲配对情况; 2)计算出任何一个男生(编号为X)和任意女生(编号为Y),在第K曲配对跳舞的情况。至少求出K的两个值。 ? 编程提示: 本题用两个队列求解比较方便,一个男生队列,一个女生队列。 题目12交通咨询模拟系统 ? 问题描述: 设计一个交通咨询模拟系统,能够让游客从任意一个城市到另外一个城市之间找到最短路径或者花费最低的路径,或者用时最少的路径。 ? 功能要求: 1) 建立交通网络图的存储结构。 2) 解决单源的最短路径问题。 3) 实现任意两个城市之间的最短路径问题。 如下图就是一个简单的交通网络,网络上的数字表示了各城市之间的路径长度。 北京 2553 西安 812 1579 成都 2368 广州 1385 上海 511 郑州 704 349 徐州 651 题目13 约瑟夫生者死者游戏 ? 问题描述: 约瑟夫游戏的大意是:每30个旅客同乘一条船,因为严重超载,加上风高浪大,危险万分;因此船长告诉乘客,只有将全船一半的旅客投入还中,其余人才能幸免遇难。无奈,大家只得同意这种办法,并议定30个人围成一圈,由第一个人数起,依次报数,数到第9人,便把他投入大海中,然后再从他的下一个人数起,数到第9人,再将他扔进大海中,如此循环地进行,直到剩下15个乘客为止。问哪些位置是将被扔下大海的位置。 ? 性能要求: 必须分别采用顺序和链表两种方式分别实现,为了不失一般性,将30改为一个任意输入的正整数N,而报数上限(原为9)也为一个任选的正整数K。 ? 编程提示: 【采用顺序表】为了解决这一问题,可以用一个长度为30的数组作为线性存储结构, 并把该数组看成是一个首尾相接的环形结构,那么每投入大海一个乘客,就要在该数组的相应位置做一个删除标记,该单元以后就不再作为计数单元。这样做不仅算法较复杂,而且效率低,还要移动大量的元素。 【采用单循环链表】首先要定义链表结点,单循环链表的结点结构于一般单链表的结点结构完全相同,只是数据域用一个整数来表示位置;然后将它们组成一个具有30个结点的单循环链表。接下来从位置为1的结点开始数,数到第8个结点,就将下一个结点开始数起,数到第8个结点,再将其下一个结点删去,如此进行下去,直至剩下15个结点为止。 题目14学生信息管理 ? 问题描述: 设计一个简单的学生信息管理系统 ? 功能要求: 1)建立学生信息管理的数据文件stud.dat;文件中至少包含15个学生的信息;每个学生至少包括:学号、姓名、年龄等5项内容(另2项自定),当再次运行程序时从该文件中读取数据; 2)可以添加(插入、追加)学生信息; 3)可以修改某个学生的某项信息。 ? 编程提示: 1)参照附录2:关于文件操作。 2)学生信息管理的数据文件中的数据,建立一个索引:每个学生信息记录在索引中有一个索引项,其包含该学生的学号、记录的位置(即记录在文件中的序号);索引文件采用平衡二叉(AVL)树。程序应能根据输入的学号通过索引进行查找;并且,你所建立的索引需要保存到文件中,以便重复使用。 题目15学生成绩管理系统 ? 问题描述: 在学生成绩管理中,经常会遇到求平均成绩,统计不及格学生成绩,统计优秀学生人数,以及按成绩对学生进行排名等。现假设有某个班级的若干名学生,每个学生都考试完成了4门课程,试对所有学生的成绩完成以下工作: (1)求每门课程的平均成绩。 (2)输出所有有不及格课程的学生的学号、姓名、全部课程的成绩、平均成绩。 (3)输出所有平均分在90分以上(含90分)的学生学号、姓名。 (4)对4门课程中的任何一门,可随意抽取1门按学生成绩进行排序。 ? 功能要求: 1、 对学生信息的查找、插入、删除、修改。 2、 分别输出优秀学生和不及格学生的信息。 3、显示每们课程的平均成绩。 4、任意抽取一门课程后,可以按该课程学生成绩对学生信息进行排序 题目16 单位员工通讯录管理系统(线性表应用) ? 问题描述: 为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的办公室电话、手机号、及电子邮箱。其功能包括通讯录链表的建立、员工通讯信息的查询、修改、插入与删除、以及整个通讯录表的输出。 ? 编程提示: 可以采用单链表的存储结构,如可定义如下的存储结构: typedef struct { /*员工通讯信息的结构类型定义*/ char num[5]; /*员工编号*/ char name[10]; /*员工姓名*/ char phone[15]; /*办公室电话号码*/ char call[15]; /*手机号码*/ }DataType; /*通讯录单链表的结点类型*/ typedef struct node { DataType data; /*结点的数据域*/ struct node *next; /*结点的指针域*/ }ListNode,*LinkList; 题目17 教学计划编制问题(图的应用) ? 问题描述: 大学的每个专业都要制定教学计划。假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限值均相等。每个专业开设的课程都是确定的,而且课程