77范文网 - 专业文章范例文档资料分享平台

程序与算法综合设计课程设计指导书-2013(6)

来源:网络收集 时间:2019-06-17 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

请的存储区域,当复制时就从存储区域复制字符,粘贴时则相反操作。

课题38(90分) 集合运算 问题描述:

设有两个用单链表表示的集合A、B,其元素类型是int且以非递减方式存储,其头结点分别为a、b。要求下面各问题中的结果集合同样以非递减方式存储,结果集合不影响原集合。 实现要求:

⑴ 编写集合元素测试函数IN_SET,如果元素已经在集合中返回0,否则返回1; ⑵ 编写集合元素输入并插入到单链表中的函数INSERT_SET,保证所输入的集合中的元素是唯一且以非递减方式存储在单链表中;

⑶ 编写集合元素输出函数,对建立的集合链表按非递增方式输出; ⑷ 编写求集合A、B的交C=A∩B的函数,并输出集合C的元素; ⑸ 编写求集合A、B的并D=A∪B的函数,并输出集合D的元素;

⑹ 求集合A与B的对称差E=(A-B)∪(B-A) 的函数,并输出集合D的元素; ⑺ 设计一个菜单,具有输入集合元素、求集合A、B的交C、求集合A、B的并D、求集合A与B的对称差E、退出等基本的功能。

测试数据:由读者自定,但集合A、B的元素个数不得少于16个。

课题39(90分) 矩阵的操作

设有两个矩阵A=(aij)m×n,B=(bij)p×q。 实现要求:

⑴ 编写矩阵输入函数INPUT_MAT,通过该函数完成矩阵的输入并返回保存矩阵的三元组(不能使用全局变量);

⑵ 编写矩阵输出函数OUTPUT_MAT,通过该函数完成矩阵的输出,输出的形式是标准的矩阵形式(即二维数组的形式);

⑶ 求矩阵的转置,矩阵的转置A=(aji)n×m,转置前输出原矩阵,转置后输出转置矩阵; ⑷ 求矩阵A、B的和。矩阵A和B能够相加的条件是:m=p,n=q;矩阵A和B如果不能相加,请给出提示信息;若能够相加,则求和矩阵C并输出C;

C=A+B=(cij)m×n,其中cij=aij+bij

⑸ 求矩阵A、B的差。矩阵A和B能够相减的条件是:m=p,n=q;矩阵A和B如果不能相减,请给出提示信息;若能够相减,则求差矩阵C并输出C;

C=A-B=(cij)m×n,其中cij=aij-bij

⑹ 求矩阵A、B的积。矩阵A和B能够相乘的条件是:p=n;矩阵A和B如果不能相乘,请给出提示信息;若能够相乘,则求积矩阵D并输出D;

D=A×B=(dij)m×q,其中dij=∑aik×bkj,k=1,2,??,n

⑺ 设计一个菜单,具有求矩阵的转置、求矩阵的和、求矩阵的积、退出等基本的功能。在求矩阵的和或求矩阵的积时要求能够先提示输入两个矩阵的,然后再进行相应的操作。

课题40(90分) 保龄球计分

【问题描述】打保龄球是用一个滚球去撞击10个站立的瓶,将瓶击倒。一局分10 轮,每轮可滚球1 次或多次,以击到的瓶数为依据计分,一局得分为10轮得分之和,而每轮的得分不仅与本轮的滚球情况有关,还可能与后一轮或两轮的滚球情况有关,即:某轮某次滚球击倒的瓶数不仅要计入本轮得分,还可能会计入前一轮或两轮得分。计分规则如下: a) 若某一轮的第一次滚球就击倒全部10个瓶,则本轮不再滚球(若是第10轮还需加2次滚球),该轮得分为本次击倒瓶数10与以后2次滚球所击倒瓶数之和。

b) 若某一轮的第一次滚球未击倒全部10个球,则对剩下未击倒的瓶再滚球一次,如果这2次滚球击倒全部10个瓶,则本轮不再滚球(若是第10轮还需加1次滚球),该轮得分为这2次击倒瓶数10与以后1次滚球所击倒瓶数之和。

c) 若某一轮2次滚球未击倒全部10个瓶,则本轮不在滚球,该轮得分为这2次滚球所击倒瓶数之和。 【实现提示】

a) 模拟10个人各打一局保龄球比赛过程,统计每局各轮得分和累计总分。 b) 逐人逐轮逐次输入一次滚球击倒的瓶数。 c) 对10人的得分由低到高排序并显示。 d) 最后,把排序的存入文件中。 【测试数据】自定模拟数据

课题41(90分) 车位管理

随着家庭购买汽车的增加,停车场车位紧张的问题越来越突出。请根据题目要求完成简单的车位管理程序。

1.停车场有若干停车位(为说明问题,假定为3个),每个位置可以存放不同种类的汽车,包括卡车Truck,客车Carriage和小轿车Car,但同一时刻一个位置只能存放0或1辆汽车。

2.管理系统模拟实际车辆停车的情况:

① 停车:新来车辆时如果有空位,按顺序为该车分配停车位,并自动记录开始停车的时间(用系统的时间);

② 计费:车辆开走时,输入车位编号,自动记录结束停车的时间(用系统的时间);计算出相应停车费;

③ 显示:显示停车场中各类车辆的信息。 ④ 保存

⑤ 退出

3.定义描述停车场的类Park,其中有3个位置用于存放各类车辆。

4.定义基类Automobile,至少包括纯虚函数Pay用于显示车辆信息并交纳相应停车费。 5.定义派生类Truck,Carriage和Car,这些车辆除了拥有车牌号、之外,

Truck还拥有载重量(浮点数,单位吨)属性,Carriage还拥有乘坐人数(整数,单位座)属性,Car还拥有排气量(浮点数,单位L)属性。具体实现上述纯虚函数Pay,显示每类车辆的相应信息,并给出计价提示,其中Truck收费2元/小时,Carriage收费1.5元/小时,Car收费1元/小时。

课题42(95分) 学生成绩管理系统: 问题描述:

主要功能是对批量学生的各门成绩进行录入、修改、查询、统计等,要求方便快速。记录学生的学号、姓名、班级、性别、联系电话以及课程和成绩;可以对学生的成绩按学号和姓名进行查寻;输出显示学生成绩;并实现排序、统计及格率和优秀率功能。 编程任务:

(1)界面基本要求:

**************************** 学生成绩管理系统

**************************** ************************************ ** F1 --帮助 ** ** F2 --输入数据并存入文件 ** ** F3 --根据学号查询成绩 ** ** F4 --根据姓名查询成绩 ** ** F5 --输出文件内容 ** ** F6 –成绩排序 ** ** F7 --统计及格和优秀人数 ** ** ESC--退出系统 ** ************************************

另:提倡用MFC的对话框做简单的输入输出交互界面。

(2)功能要求:

1)帮助:系统使用方法的相关信息。

2)输入数据并存入文件:输入相关信息,并实现文件流的读写操作。 3)根据学号查询成绩:输入学号,查询学生的各门成绩

4)根据姓名查询成绩:输入姓名,查询学生的各门成绩 5)输出文件内容:屏幕输出显示所有学生的成绩

6) 成绩排序:对某门成绩或总分进行快速排序,显示、保存 7)统计及格和优秀人数:统计及格和优秀率。 8)退出

课题43(90分) 英文单词填空游戏

问题描述:这是一款帮助学生背单词的小软件。建立单词库,可从单词库中随机抽取单词,并随机隐去该单词中的一些字母,在屏幕上显示带空格的单词,用户对空格处的字母进行补全,程序判断填补是否正确,并统计正确率。 编程任务:

(1) 建立单词库,并可以方便地对单词库进行增加、删除。 (2) 随机读取一个单词。

(3) 随机隐去单词中的一些字母,规则是:长度为2~4空一个字母,5~7空二个字母,8~

10空三个字母,11以上空四个字母。用随机数方式确定隐去哪几个位上的字母,并在屏幕上显示带空格单词。

(4) 用户填充空格处的字母,程序判断填充是否正确。 (5) 当用户结束游戏时,统计正确率,并输出相应的鼓励语句。

课题44(85分) 数值排序问题

问题描述:实现常用排序算法:插入排序、冒泡排序、选择排序、快速排序、堆排序、归并排序、基数排序和希尔排序,输出有序数列,并输出排序次数。 编程任务:

(1) 实现上述各种排序算法。 (2) 用文件方式输入无序数据。

(3) 用大量不同规模、不同混乱程序数列进行实验,输出有序数列和排序次数。 (4) 分析各种排序算法的时间性能特点。

课题45(95分) 城市管理

问题描述:用无序表实现一个城市数据库。每条数据库记录包括城市名(任意长的字符串)和城市的坐标(用整数x和y表示)。实现数据的插入、删除、查询功能,并实现指定距离内的所有城市。设计算法实现指定一定数目的具体城市,寻找遍历这些城市并回到出发点的最佳路径,观察随着城市数目的增加,算法执行效率的变化。 编程任务:

(1) 用列表对城市进行记录和管理,实现城市的增加、删除和查询功能,并实现文件保存和

读取

(2) 计算城市之间距离,统计输出距离某城市一定范围内的所有城市。 (3) 实现一定规模城市的遍历最佳路径选择。

(4) 分析随着城市数目增加时,算法执行效果的改变,深刻理解旅行商问题。

课题46(95分) 实现简单的数字图像处理

一幅图像是包含位置集和颜色集的数据。考虑二维灰度图像,位置集就是一个矩阵的行列,矩阵的内容为颜色值,颜色为0~255间的整数,表示该位置的灰度等级,0为黑色,255为白色。

图像处理就是与该矩阵相关的计算,一种常见的计算就是通过一点和周围8个点的信息,共同决定该点的新值:如一点的新值为改点和周围8点颜色之和的平均,这一操作可用下图表示。

1/9 1/9 1/9 1/9 1/9 1/9 如果将上述操作变为下图

1/9 1/9 1/9 这样处理后图像会变得平滑,因此,称为平滑操作。

-1 -1 -1 -1 9 -1 -1 -1 -1 操作后图像的边缘变得更加突出,被称为锐化操作。 实现上述图像的平滑和锐化操作。 编程任务:

(1) 常见格式图像的读写(灰度图) (2) 设计上述平滑算子和锐化算子 (3) 实现平滑操作和锐化操作

(4) 观察处理后图像的变化,分析算子的作用。

课题47(85分)

编一棋盘游戏程序,人为一方,计算机为一方,人下时字符 * 将放在所指定的位置,而计算机下时字符 @ 将放在某一空格位置。行、列、或两对角线有连续三个相同字符一方为胜方,也有平局情况。要求能动态演示。

* @ *

课题48(85分)

模拟人工洗牌

@ * * 编写一个模拟人工洗牌的程序,将洗好的牌分别发给四个人。

使用结构card 来描述一张牌,用随机函数来模拟人工洗牌的过程,最后将洗好的52张牌顺序分别发给四个人。

对每个人的牌要按桥牌的规则输出。即一个人的牌要先按牌的花色(顺序为梅花、方块、红心和黑桃)进行分类,同一类的牌要再按A、K、Q、J、?、3、2牌的大小顺序排列。另发牌应按四个人的顺序依次分发。

注:C++随机数函数有: void srand(unsigned seed)

功能:函数可以设置rand函数所用得到随机数产生算法的种子值。任何大于1的种子值都会将rand随机数产生函数所产生的虚拟随机数序列重新设置一个起始点。

int rand(void)

功能:此函数可以产生介于0到32767间的虚拟随机数,所谓虚拟随机数的意思就是因为当只设置相同的启动种子值,所产生的数值序列都是可预测的。要产生不可预测的数值序列,必须通过srand函数不断改变随机数的启始种子值,已产生最佳的随机数。

头文件:stdlib.h

课题49(85分)

设计一个程序,该程序输入一个英语单词和它的释义(应考虑一个单词可以有多个释义)。将单词和它的释义分别存放在文件word.dat和meaning.dat中。文件word.dat中存储的数据的结构为:

class index { public:

char word[20]; streampos offset; };

其中,数据成员offset用于记录单词word的释义在文件meaning.dat中的位置。用户输入一个单词,屏幕输出该单词的释义。

提倡用MFC的对话框做简单的输入输出交互界面。

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库程序与算法综合设计课程设计指导书-2013(6)在线全文阅读。

程序与算法综合设计课程设计指导书-2013(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/662220.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: