首页 C语言程序设计基础-程序设计基础课程设计-2015-宣信程序设计教研组

C语言程序设计基础-程序设计基础课程设计-2015-宣信程序设计教研组

举报
开通vip

C语言程序设计基础-程序设计基础课程设计-2015-宣信程序设计教研组C语言程序设计基础-程序设计基础课程设计-2015-宣信程序设计教研组 程序设计基础课程设计习题集 (2015版) 单 位: 合肥工业大学 宣城校区 授课时间: 2014 - 2015学年 第二学期 命 题 人:周波 钟华刚 吕俊伟 张延孔 授课年级: 2014级本科生 总 课 时: 56 I 目 录 一 出题目的 .................................................................................................

C语言程序设计基础-程序设计基础课程设计-2015-宣信程序设计教研组
C语言程序设计基础-程序设计基础课程设计-2015-宣信程序设计教研组 程序设计基础课程设计习题集 (2015版) 单 位: 合肥工业大学 宣城校区 授课时间: 2014 - 2015学年 第二学期 命 题 人:周波 钟华刚 吕俊伟 张延孔 授课年级: 2014级本科生 总 课 时: 56 I 目 录 一 出题目的 ...................................................................................................... 1 二 题量与题型 .................................................................................................. 1 三 课程设计流程 .............................................................................................. 1 3.1 选题 ................................................................................................. 1 3.2 编码 ................................................................................................. 2 3.3 验收和答辩 ..................................................................................... 2 3.4 成果提交 ......................................................................................... 2 3.5 评分 ................................................................................................. 2 四 验收说明 ...................................................................................................... 3 五 评分 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 ...................................................................................................... 3 六 纪律 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 与守则说明 .................................................................................. 3 七 题目 .............................................................................................................. 4 1 简单工资管理系统设计(??) .................................................... 4 2 宿舍管理查询软件设计与实现(??) ........................................ 4 3 车位管理系统(??) .................................................................... 4 4 学生成绩管理系统(??) ............................................................ 5 5 用英文单词模拟数学计算(??) ................................................ 6 6 模拟电梯控制系统(???) ........................................................ 7 7 保龄球计分(??) ........................................................................ 7 8 简单通信录管理软件设计(??) ................................................ 8 9 简单汽车租赁管理软件设计(??) ............................................ 8 10 简单英文词典(??) .................................................................. 8 11 机房机位预定系统(??) .......................................................... 9 12 物业费管理系统(??) .............................................................. 9 13 销售管理系统设计(??) ........................................................ 10 II 14 学生选修课程系统设计(??) ................................................ 10 15 职工工作量统计系统设计(??) ............................................ 11 16 运动会比赛计分系统(??) .................................................... 11 17 机房收费管理系统(??) ........................................................ 11 18 歌手比赛系统(??) ................................................................ 12 19 校历显示(??) ........................................................................ 12 20 小学生测验(??) .................................................................... 13 21 足球联赛积分(??) ................................................................ 13 22 对参赛结果分数进行处理(??) ............................................ 14 23 列车车次管理系统(??) ........................................................ 15 24 电子时钟(??) ........................................................................ 15 25 输出满足条件整数(??) ........................................................ 16 26 计算24游戏(???) .............................................................. 16 27 矩阵乘法(??) ........................................................................ 16 28 矩阵位置旋转算法(??) ............................................................. 16 29 矩阵运算(????) ..................................................................... 17 30 n阶方阵求逆(???) .............................................................. 17 31 求所有不超过200的N值(??) ........................................... 18 32 回文数的形成(???) ............................................................ 18 33 进制转换(??) ........................................................................ 18 34 用梯形法求定积分(???) .................................................... 19 35 位数大小排序(???) ............................................................ 19 36 100!的末尾有多少个零(??).................................................. 19 37 地板装修问题(???) ............................................................ 19 38 矩阵区域增长(?????) .................................................... 20 39 两个小游戏(???) ................................................................ 20 40 人机猜数游戏(???) ............................................................ 21 41 生命游戏(????) ................................................................ 21 42 盒子分形(???) .................................................................... 22 III 43 迷宫问题 (?????) ............................................................... 23 44 英文单词填空游戏(??) ............................................................. 23 45 一字棋游戏设计实现(????) ................................................. 24 46 扑克牌洗牌发牌过程模拟(???) ............................................. 24 47 俄罗斯方块游戏(????) .................................................... 25 48 贪吃蛇游戏(????) ............................................................ 25 49 打字游戏(???) .................................................................... 26 50 2048游戏(???) .................................................................... 26 51 推箱子游戏(????) ............................................................ 27 52 红蓝棋游戏(???) ................................................................ 27 53 让计算机来猜测用户―暗记‖的某张扑克牌(??) ................ 28 54 决策树算法实现(???) ............................................................. 29 55 集合运算(???) ......................................................................... 31 56 字符串处理函数(??) ............................................................ 32 57 统计符号(??) ........................................................................ 32 58 三角形计算(???) ................................................................ 33 59 八数码问题(?????) ............................................................. 33 60 字符串距离(????) ............................................................ 35 61 实现带有括号的四则运算(????) .................................... 35 62 线性方程组求解(????) .................................................... 35 63 猴子吃桃问题(??) ................................................................ 36 64 数组处理(??) ........................................................................ 36 65 过河问题(????) ................................................................ 36 八 课程设计报告模板 .................................................................................... 37 8.1 系统分析与系统设计 ................................................................... 37 8.2详细设计与编码 ............................................................................ 37 8.3上机调试和测试 ............................................................................ 37 8.4撰写课程设计报告 ........................................................................ 37 8.5课程设计报告模版 ........................................................................ 38 IV 九 版权说明 .................................................................................................... 44 V 一 出题目的 课程设计对象: 2014级计算机系大一学生。 课程设计对象要求: 初步学习过C、C++。 课程设计目的: (1)锻炼同学们设计程序解决问题的能力,要求能够针对具体问题能够进行简单的需求分析,能够将需求分解为功能较为明确的功能函数,初步掌握编写应用程序的基本流程; (2)能够熟练利用结构化程序设计思想或面向对象编程思想编写程序,要求熟练掌握C、C++编程语言的基本语法,能够熟练编写、调试代码,能够利用分步调试、打断点等方法解决常见Bug。 二 题量与题型 题 型 题 量 基本工程类应用题 20 数学思考与应用类题目 15 小游戏编写与应用 15 简单数据结构与算法设计 15 总题量 ?60 三 课程设计流程 3.1 选题 (1)学生可在给出的设计题目中选择一个题目完成设计任务,每个题目都给出了难度星级,请同学们选题时注意。 (2)选题时原则上一个标准班级同学的设计题目不能重复,即不能有两名以上同学完成同一个题目。 1 (3)每个同学独立完成设计任务,即不能有两名以上同学合作完成同一设计任务。 (4)同学可以自选设计题目,对自选的题目必须向指导老师书面申请,经指导老师批准后有效。 3.2 编码 鼓励使用C或C++完成设计任务。同学也可以选择其它自己熟悉的语言完成。同等条件下,使用C或C++完成可获适当加分。 有些设计题目鼓励实现图形用户界面,比如用MFC实现,凡使用GUI实现者可获得适当加分。 3.3 验收和答辩 在课程设计执行期的最后一个工作日,由指导老师对每个学生设计的完成情况进行验收和答辩。由答辩学生向指导老师演示设计的完成情况和效果,老师针对具体情况向学生提问。 3.4 成果提交 设计工作完成后需提交课程设计报告的纸质文档和电子文档。电子文档首先提交到班长处,班长打包后再提交给指导老师。 3.5 评分 课程设计成绩按优秀、良好、中等、及格和不及格五个等级评分,评分考察的因素如下: (1)设计题目的难度系数。 (2)现场验收答辩情况。 (3)设计的实现完成情况。 (4)课程设计报告完成情况。 (5)凡未经验收答辩、未按期提交纸质版和电子版设计报告的同学一律按不及格处理。 (6)具体评分标准见五。 2 四 验收说明 1 所有参与课程设计者,均需提交相应代码与课程设计报告,交由课程设计教师验收。 2 评分标准参考评分标准四。 3 每个标准班级优秀者(?90分)必须要求两位或以上教师验收同意方可,且参与教师具有一票否决权。 4 每个标准班(45人)成绩为优秀者不得超过10人,对于特别优秀的班级,可由负责课程设计验收的教师集体讨论决定是否增加优秀人数。 5 对于在课程设计过程中,不遵守实验室纪律者,验收教师有权利降低其课程设计成绩,对于情节严重者,可给予其零分。 五 评分标准 1 验收内容:能够完成题目的完整代码一份,相应的课程设计报告一份。 2 要求相应代码能够满足题目基本要求(?60分)。 3 要求对题目理解正确,有详细的需求分析和清晰的设计思路,有合理的设 计 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 ,有合理的解决方案与技术流程(?70分)。 4 要求代码规范、精炼,并具有必要的、相对规范的代码注释(?80分)。 5 能够在完成题目基本要求的前提下进行合理的创新设计,对于此类创新,验收教师可考虑予以加分。 6 要求课程设计报告布局清晰、排版整洁美观,对于验收过程中未提交实验报告者,可考虑延期验收,同时降低其验收成绩。 7 课程设计报告可写成电子档,最后打印装订提交。 8 本评分标准仅作为参考,验收教师有根据学生综合 评价 LEC评价法下载LEC评价法下载评价量规免费下载学院评价表文档下载学院评价表文档下载 给予评分的权利。 六 纪律规范与守则说明 1 程序设计基础课程设计参与者必须遵守实验室纪律,并具有保护实验室清洁卫生,爱护公共财产等义务。 2 程序设计基础课程设计参与者在参与过程中不得迟到早退,在实验室内不得大声喧哗。 3 七 题目 1 简单工资管理系统设计(??) 设计某单位职工工资管理系统,功能如下: 对于每位职工存储以下信息:职工编号、基本工资、津贴、岗位津贴、应发数、个人所得税、应扣数、实发数。个人所得税计算方法设为:工资少于2000元的部分为0,2000—3000元部分为5%,3000—4000部分为10%,4000—5000部分为15%,5000元以上部分为20%。 要求: ? 创建存储职工工资信息的存储文件; ? 添加某职工的工资信息; ? 删除某职工的工资信息; ? 修改某职工的部分工资信息(当月开始增加或减少某些项工资或扣款数变化); ? 输出指定编号职工的工资信息(查询用) ? 输出全体职工的工资信息(发工资用)。 2 宿舍管理查询软件设计与实现(??) 任务:为宿舍管理人员编写一个宿舍管理查询软件。 要求: ? 采用交互工作方式 ? 可以增加、删除、修改信息 ? 建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(选择、快速排序、堆排序等任选一种) ? 查询: a.按姓名查询 ;b.按学号查询 ;c按房号查询 ? 打印任一查询结果(可以连续操作) 3 车位管理系统(??) 随着家庭购买汽车的增加,停车场车位紧张的问题越来越突出。请根据题目 4 要求完成简单的车位管理程序。 1(停车场有若干停车位(为说明问题,假定为3个),每个位置可以存放不同种类的汽车,包括卡车Truck,客车Carriage和小轿车Car,但同一时刻一个位置只能存放0或1辆汽车。 2(管理系统模拟实际车辆停车的情况: ?停车:新来车辆时如果有空位,按顺序为该车分配停车位,并自动记录开始停车的时间(用系统的时间); ?计费:车辆开走时,输入车位编号,自动记录结束停车的时间(用系统的时间);计算出相应停车费; ?显示:显示停车场中各类车辆的信息。 ?保存 ?退出 3(定义描述停车场的类Park,其中有3个位置用于存放各类车辆。 4(定义基类Automobile,至少包括纯虚函数Pay用于显示车辆信息并交纳相应停车费。 (定义派生类Truck,Carriage和Car,这些车辆除了拥有车牌号、之外, 5 Truck还拥有载重量(浮点数,单位吨)属性,Carriage还拥有乘坐人数(整数,单位座)属性,Car还拥有排气量(浮点数,单位L)属性。具体实现上述纯虚函数Pay,显示每类车辆的相应信息,并给出计价提示,其中Truck收费2元/小时,Carriage收费1.5元/小时,Car收费1元/小时。 4 学生成绩管理系统(??) 问题描述:主要功能是对批量学生的各门成绩进行录入、修改、查询、统计等,要求方便快速。记录学生的学号、姓名、班级、性别、联系电话以及课程和成绩;可以对学生的成绩按学号和姓名进行查寻;输出显示学生成绩;并实现排序、统计及格率和优秀率功能。 编程任务: (1)界面基本要求: **************************** 5 学生成绩管理系统 **************************** ************************************ ** F1 --帮助 ** ** F2 --输入数据并存入文件 ** ** F3 --根据学号查询成绩 ** ** F4 --根据姓名查询成绩 ** ** F5 --输出文件内容 ** ** F6 –成绩排序 ** ** F7 --统计及格和优秀人数 ** ** ESC--退出系统 ** ************************************ 另:提倡用图形界面做简单的输入输出交互界面。 (2)功能要求: 1)帮助:系统使用方法的相关信息。 2)输入数据并存入文件:输入相关信息,并实现文件流的读写操作。 3)根据学号查询成绩:输入学号,查询学生的各门成绩 4)根据姓名查询成绩:输入姓名,查询学生的各门成绩 5)输出文件内容:屏幕输出显示所有学生的成绩 6) 成绩排序:对某门成绩或总分进行快速排序,显示、保存 7)统计及格和优秀人数:统计及格和优秀率。 8)退出 5 用英文单词模拟数学计算(??) 读入两个小于100的正整数A和B,计算A+B。需要注意的是:A和B的 每一位数字由对应的英文单词给出。具体的输入输出格式规定如下: 输入格式:测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B = ",相邻两字符串有一个空格间隔。当A和B同时为zero时输入结束,相应 的结果不要输出。 6 输出格式:对每个测试用例输出1行,即A+B的值。 输入样例: one + two = three four + five six = zero seven +eight nine = 输出样例: three nine zero nine six 6 模拟电梯控制系统(???) 设计一个模拟电梯控制系统。 要求: 电梯不少于4部; 楼层高度不少于10层。 能用图形界面实现可获得加分。 7 保龄球计分(??) 【问题描述】打保龄球是用一个滚球去撞击10个站立的瓶,将瓶击倒。一局分10 轮,每轮可滚球1 次或多次,以击到的瓶数为依据计分,一局得分为10轮得分之和,而每轮的得分不仅与本轮的滚球情况有关,还可能与后一轮或两轮的滚球情况有关,即:某轮某次滚球击倒的瓶数不仅要计入本轮得分,还可能会计入前一轮或两轮得分。计分规则如下: a) 若某一轮的第一次滚球就击倒全部10个瓶,则本轮不再滚球(若是第10轮还需加2次滚球),该轮得分为本次击倒瓶数10与以后2次滚球所击倒瓶数之和。 b) 若某一轮的第一次滚球未击倒全部10个球,则对剩下未击倒的瓶再滚球一次,如果这2次滚球击倒全部10个瓶,则本轮不再滚球(若是第10轮还需加1次滚球),该轮得分为这2次击倒瓶数10与以后1次滚球所击倒瓶数之和。 7 c) 若某一轮2次滚球未击倒全部10个瓶,则本轮不在滚球,该轮得分为这2次滚球所击倒瓶数之和。 【实现提示】 a) 模拟10个人各打一局保龄球比赛过程,统计每局各轮得分和累计总分。 b) 逐人逐轮逐次输入一次滚球击倒的瓶数。 c) 对10人的得分由低到高排序并显示。 d) 最后,把排序的存入文件中。 【测试数据】自定模拟数据 8 简单通信录管理软件设计(??) 设计实现一个简单的通信录管理系统,对联系对象的固定电话、手机、邮箱、QQ好等惊醒管理。 要求: ? 添加、删除、修改记录; ? 分组管理功能; ? 自行设计存储文件,不能使用现有数据库管理系统。 9 简单汽车租赁管理软件设计(??) 设计实现一个简单的汽车租赁管理系统。 要求: ? 车辆基本信息管理(车辆的添加、删除、修改); ? 租车管理功能(租车、换车、计费等); ? 统计功能(统计出租率、出租费用)。 ? 其它扩展功能(可根据情况自行添加功能)。 10 简单英文词典(??) 设计一个程序,该程序输入一个英语单词和它的释义(应考虑一个单词可以有多个释义)。将单词和它的释义分别存放在文件word.dat和meaning.dat中。文件word.dat中存储的数据的结构为: class index 8 { public: char word[20]; streampos offset; }; 其中,数据成员offset用于记录单词word的释义在文件meaning.dat中的位置。 要求: ? 添加、删除、修改单词; ? 用户输入一个单词,屏幕输出该单词的释义。 11 机房机位预定系统(??) 20台机器,编号1到20,从早八点到晚八点。两小时一个时间段,每次可预定一个时间段。功能要求: (1)系统以菜单方式工作 (2)查询,根据输入时间,输出机位信息。 (3)机位预定,根据输入的时间查询是否有空机位,若有则预约,若无则提供最近的时间段,另:若用户在非空时间上机,则将用户信息列入等待列表。 (4)退出预定,根据输入的时间,机器号撤销该事件的预定~ (5)查询是否有等待信息,若有则提供最优解决方案(等待时间尽量短),若无则显示提示信息。 12 物业费管理系统(??) 完成小区物业费用管理系统设计。 功能要求: (1)新住户信息的添加。(户主姓名、性别、身份证号、联系电话、楼号、单元号、房号、平米数、每平米物业价格、应缴纳物业费,备注信息) (2)修改住户信息的功能。 (3)删除住户信息的功能。 9 (4)应缴物业费自动生成。每月1号,自动生成本月份的物业费。如果该住户之前的物业费未交清,则本月物业费与之前拖欠费用进行累加,为该用户应缴纳的物业费。 (5)缴费功能。根据用户缴纳金额,修改“应缴纳物业费”。 (6)统计功能:能够按楼号分类统计所有未交清物业费的记录。能够按拖欠款项多少,对所有用户信息进行从大到小排序。 13 销售管理系统设计(??) 某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。每个销售员都将当天出售的每种产品各写一张便条交上来。每张便条包含内容:1)销售员的代号,2)产品的代号,3)这种产品的当天的销售额。每位销售员每天上缴1张便条。 试设计一个便条管理系统,使之能提供以下功能: (1)系统以菜单方式工作 (2)便条信息录入功能(便条信息用文件保存) (3)收集到了上个月的所有便条后,读取销售情况 1)计算每个人每种产品的销售额。 2)按销售额对销售员进行排序,输出排序结果(销售员代号) 3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额) 14 学生选修课程系统设计(??) 假定有n门课程,每门课程有:课程编号,课程名称,课程性质(公共课、必修课、选修课),总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。试设计一选修课程系统,使之能提供以下功能: (1)系统以菜单方式工作 (2)课程信息录入功能(课程信息用文件保存) (3)课程信息浏览功能 10 (4)课程信息查询功能,查询方式分两种: 按学分查询, 按课程性质查询 (5)学生选修课程:提示选课成功,按照学生学号查询该生所选课程。 15 职工工作量统计系统设计(??) 编写有一个程序,能完成单位职工工作量的统计工作 功能要求: (1)该程序输入职工工号和完成的产品数量,程序允许同一职工有多次输入,由程序对其完成的产品数量实现累计(该信息保存到文件中)。 (2)程序按完成数量对职工进行排序,并确定他们的名次。按完成的产品数量由多到少的顺序,输出名次、同一名次的职工人数及他们的工号(工号由小到大顺序输出)。 (3)能按照职工号查询该职工完成的产品总数量。 (4)能修改某职工的产品数量。 5)系统以菜单方式工作 ( 16 运动会比赛计分系统(??) 题目要求: 初始化输入:N:参赛学校总数,M:男子竞赛项目数,W:女子竞赛项目数。各项目名次取法有如下几种: 取前5名:第一名得分7分,第二名得分5,第三名得分3,第四名得分2,第五名得分1; 取前3名:第一名得分5,第二名得分3,第三名得分2; 功能要求: (1)系统以菜单方式工作 (2)由程序提醒用户填写比赛结果,输入各项目获奖运动员信息。 (3)所有信息记录完毕后,用户可以查询各个学校的比赛成绩。 (4)查看参赛学校信息和比赛项目信息等。 17 机房收费管理系统(??) (1)输入功能:输入30名学生的学号、班级、姓名、上机起始时间。 11 (2)计算功能:计算每个下机学生的上机费用,每小时1元。 (上机费用=上机时间* 1.0/h ,不足一小时按一小时计算) (3)查询功能:按条件(班级、学号、姓名)显示学生的上机时间。 (4)机器使用情况的显示(显示方式不限但要一目了然) 18 歌手比赛系统(??) 对一次歌手比赛的成绩进行管理,功能要求: 1、输入每个选手的数据包括编号、姓名、十个评委的成绩,根据输入计算 出总成绩和平均成绩(去掉最高分,去掉最低分)。 2、显示主菜单如下: 1)输入选手数据 2)评委打分 )成绩排序(按平均分) 3 4)数据查询 5)追加选手数据 6)写入数据文件 7)退出系统。 19 校历显示(??) 设计要求: (1)至少采用文本菜单界面(如果能采用图形菜单界面更好) (2)写出课程设计报告,具体要求见相关说明文档 功能要求: (1)输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在 1940-2040年之间。 (2)输入年月,输出该月的日历。 (3)输入年月日,输出星期几,是否是公历节日 (4)显示法定节假日 12 (5)显示寒暑假和工作日 20 小学生测验(??) 面向小学1~2年级学生,随机选择两个整数和加减法形成算式要求学生解答。 功能要求: (1)电脑随机出10道题,每题10分,程序结束时显示学生得分; (2)确保算式没有超出1~2年级的水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许的; (3)每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案; (4)对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分; 5)总成绩90以上显示“SMART”,80-90显示“GOOD”,70-80显示( “OK”,60-70显示“PASS”,60以下“TRY AGAIN”。 21 足球联赛积分(??) 问题描述 足球联赛采用主客场双循环赛制,胜一场得3分,平局各得1分,负一场得0分,联赛排名以积分多者在前,当两队(或多队)积分相同时,则净胜球(即进球数与失球数之差)多者在前,若净胜球相同,则进球数多者在前,若仍相同,则抽签或踢附加赛决定名次(这在联赛结束后进行,联赛未结束则两队名次并列,本程序不做这方面要求)。试编一程序统计最近一轮比赛后,各队积分及排名。 基本要求 设积分表结构如下:队名(不超过15个字符),已比赛的场数,赢的场数,平的场数,负的场数,进球数,失球数,积分。积分表放在正文文件中。最近一轮的结果从键盘输入,其形式为:主队名(可用代码),客队名(可用代码),主队得分(即进球数),客队得分(即进球数)。程序应根据此轮结果修改各队的积分和名次,所得的最新记分表仍在原积分文件中并同时在屏幕上显示。 13 测试数据 可选择我国当年的甲A或甲B联赛的数据输入,并检查与报章公布的数据是否一致。 选做内容 篮球联赛(如NBA)往往采用胜率来决定名次,胜率就是取胜的场数比赛场数之比。若胜率相同,再由净胜球及进球数来决定名次,通过继承性完成上述要求。 22 对参赛结果分数进行处理(??) 参赛选手n人(n>1),评委m人(m>2),评委给每一选手打一个分数score(分数score为小于等于10的一个正实数)。选手的最后得分lastScore计算方法为 (1)m<9时,去掉一个最高分和一个最低分后另m-2个得分的平均值。 2)m?9时,去掉两个最高分和两个最低分后另m-4个得分的平均值。 ( 假设事先已经建立了text型的数据文件f1.txt,其中依次记录着n个选手的编号(一个正整数)、姓名(一个字符串)以及m个评委给出的得分。 请编制程序,依次从数据文件f1.txt中读入n个选手的有关信息,而后按上述规定方法计算出每一个选手的最后得分,而且往屏幕上以及另一个text型文件f2.txt中同时输出如下形式的结果信息。 假设参赛选手人数n=5,评委人数m=7,磁盘文件f1.txt中的初始数据为: 1 zhangjin 8.8 9.3 7.9 8.7 8.9 9.7 9.2 2 lintao 8.9 8.2 8.6 8.8 8.5 9.1 9.3 3 guojian 8.9 8.4 8.7 8.6 8.6 8.4 8.6 4 maling 7.9 8.3 8.5 8.6 8.5 8.9 8.3 5 liuyifan 9.5 9.1 9.8 9.2 9.0 9.5 8.9 那么,程序执行后,屏幕显示结果以及磁盘文件f2.txt中的结果均应该为: ---------------------------------------------------------- 参赛号 姓 名 最高分 最低分 累积分 最后得分 ---------------------------------------------------------- 14 1 zhangjin 9.7 7.9 44.9 8.98 2 lintao 9.3 8.2 43.9 8.78 3 guojian 8.9 8.4 42.9 8.58 4 maling 8.9 7.9 42.2 8.44 5 liuyifan 9.8 8.9 46.3 9.26 ---------------------------------------------------------- 思考:可进一步考虑找出比赛的第1至第k名,也在屏幕以及f2.txt中同时输出 相关的结果信息(k小于等于n,并规定若多个选手最后得分相同时,则有效分 (即已删除原来的最高分后)中最高分高者名次优先)。 23 列车车次管理系统(??) 实现简单的列车车次管理系统,可以对列车的车次进行简单的增加、删除、 修改、查找等功能,乘客还可以预订车票,管理员还可以查找乘客的信息等等功 能。 基本功能描述: 乘客: 查询车次情况(按照车次号、发车时间、到站时间等)。 1. 2.根据已有的车次预定车票。 3.显示全部车次情况。 管理员: 1.查询车次情况(按照车次号、发车时间、到站时间等)。 2.增加,修改,删除车次情况,显示全部车次情况。 3.删除乘客的信息,查找乘客信息(按照身份证),显示全部乘客的信息。 24 电子时钟(??) 设计并实现如下功能: 1)设置日期 2)用“年/月/日 小时:分钟:秒”格式输出日期 3)在当前时钟的基础上可以增加、较少时间,并显示 15 4)设置的时钟能随着时间自动增加(比如设置当前时间为2015/5/25 10:10:10,10秒后再显示为2015/5/25 10:10:20) 25 输出满足条件整数(??) 目的:通过本课程设计,培养学生算法设计的能力,运用语言编程及调试的能力,运用计算机解决实际问题的能力,为后续计算机专业课程的学习打下坚实的基础。 要求:输入一个正整数N,从小到大输出满足如下条件的整数: 是7和7的倍数 包含7的数字 且输出的数字? N 例如(17,27,37...70,71,72,73...) 26 计算24游戏(???) 要求:输入四个数通过加减乘除计算出24,显示计算过程,并提示成功信息。 27 矩阵乘法(??) 编写一个函数实现矩阵A(2行3列)与矩阵B相乘(3行2列),乘积放在C数组中。 在主函数中输入相乘的两数组,并输出结果。 28 矩阵位置旋转算法(??) 要求: ? 设计一个矩阵类,实现矩阵的90度、180度、270度的旋转。 ? 使用控制台或者图形界面,测试这个矩阵类的使用。 解题思路: 矩阵里面的数据是离散的,可以用坐标来表示,例如(0,0)、(2,3)„„等,根据此坐标和整个矩阵的宽度和高度计算旋转后的此坐标新的坐标,填入新矩阵相应新坐标位置。 16 29 矩阵运算(????) 设有两个矩阵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 ? 设计一个菜单,具有求矩阵的转置、求矩阵的和、求矩阵的积、退出等基本的功能。在求矩阵的和或求矩阵的积时要求能够先提示输入两个矩阵的,然后再进行相应的操作。 30 n阶方阵求逆(???) 题目要求: 输入一个n(n<256)阶方阵A,输出是它的逆矩阵,要求还要再将得到的逆矩阵与原来的矩阵相乘,验证其结果是单位矩阵。 主要功能包括: (1)输入方阵A; (2)输出方阵A; 17 (3)输出逆矩阵; (4)输出A与逆矩阵的乘积; (5)退出系统; 31 求所有不超过200的N值(??) N的平方是具有对称性质的回文数。回文数就是将一个数从左向右读是一样 2的,如满足题意要求的数有:N,11,11,121。 32 回文数的形成(???) 设计要求: (1) 只能使用C语言,源程序要有适当的注释,使程序容易阅读 (2) 至少采用文本菜单界面(如果能采用图形菜单界面更好) (3) 写出课程设计报告,具体要求见相关说明文档 功能要求: 任取一个十进制整数,将其倒过来后与原来的整数相加,得到一个新的整数后重复以上步骤,则最终可得到一个回文数。请编程验证。(回文数就是将一个数从左向右读是一样的,如121,11等)。(注:回文数不超过2147483647) 回文数的这一形成规则目前还属于一个猜想,尚未获得数学上的验证,有些回文数要经历上百个步骤才能获得,请编程验证,打印形成过程。如输入整数78,则形成回文数的过程为:78,87,165,165,561,726,726,627,1353,1353,3531,4884。 提示:一个函数用来求反序数,另一个函数判断是否为回文数,在主函数中输入输出。 33 进制转换(??) 题目要求: 编一程序,实现将输入的一个无符号整数转换为二进制和八进制表示,分别存入字符数组中并输出。(提示:算法采用模拟人工法。) 注:计算机模拟人工是编程中常用的方法,这种方法要求编程者首先分析在 18 人工方式下解决问题的过程,从中找出步骤和规律,然后编写程序,按照人工解决问题的步骤和规律进行操作。 主要功能包括: (1)输入无符号整数; (2)输出无符号整数; (3)输入输入要转换的进制; (4)输出转换后的值; (5)退出系统; 34 用梯形法求定积分(???) 2用梯形法编程求函数f(x)=x+2x+1的定积分 提示:把积分区间[a,b]等分为n等分(a,b,n的值由程序输入。),可得到若干个小梯形,积分面积就近似为这些小梯形面积之和。 35 位数大小排序(???) 程序说明:输入一个五位整数,对此整数中的五个数值进行从大到小的顺序排序,形成一个新的五位整数,并输出这个整数。 36 100!的末尾有多少个零(??) 由于计算机所能表示的整数范围有限,不可能用求出100!之后再数其尾数有多少个零的方法。必须从数学上分析100!末尾出产生零的条件。不难看出:一个整数若含有一个5的因子则必然会在求100!时产生一个零。因此原问题转换为求1到100这100个整数中包含了多少5的因子。 37 地板装修问题(???) 今年夏天,计算中心将进行一次大规模的装修,原来的地板铺有N×M块正方形瓷砖,这些瓷砖都已经破损老化了,需要予以更新。装修工人在前往商店选购新的瓷砖时,发现商店目前只供应长方形的瓷砖,现在的一块长方形瓷砖,相当于原来的两块正方形瓷砖,请问能否用1×2的长方形瓷砖去覆盖N×M的地板,如果能,需要多少块瓷砖,有几种覆盖方式, 19 程序输入N、M的值,如果不能覆盖,则提示不能完全覆盖;如果可以覆盖,给出覆盖方式以及所需的瓷砖数量。图形界面可以加分。 38 矩阵区域增长(?????) 由文件读入一个大矩阵,从键盘读入M,N在矩阵中选择一个种子点,然后选择区域增长的条件,若种子点4邻域中有点符合增长条件,则进行区域增长,最后输出产生的区域,可用全是0,1 的矩阵表示。0表示不是该区域,1表示是该区域。也可采用图形界面输入区域增长的结果。 区域增长的条件: (1) 阈值增长(设定阈值T,若矩阵内的值大于或者小于阈值就进行 增长) (2) 4邻域平均值,该点4邻域的平均值,做平均值符合条件,则进 行增长。(设定阈值T) 3) 8邻域平均值(同2,设定阈值T) ( 39 两个小游戏(???) 目的:很多精妙的数学理论往往都以有趣的游戏形式表现出来,正是这些有趣的小游戏使得高深的数学理论被广泛的传播和接受。通过编程实现这些“数学游戏”可以提高学生的编程技巧和算法设计能力,提高解决实际问题的能力。 要求: 猜数字(文曲星游戏) 电脑随机生成一个0~9999之间的整数,若为23,则记为0023。玩家去猜,电脑将对玩家的答案做个评价,然后玩家再按电脑的评价重新猜,一共8次机会,猜对为赢。 比如: 电脑随机生成7859,若玩家第一次输入:1234,程序返回0A0B,A代表数字和位置都猜对,B代表数字猜对,但位置不对。 若玩家第二次输入:5678,则返回0A2B,因为78都是原整数中的,但是位置不对。 20 若玩家第三次输入:0896,则返回1A1B…… 依次,直至玩家输入7859,返回4A0B并终止程序。 记住,只有8次机会哦。 40 人机猜数游戏(???) 设计要求: (1)只能使用C语言,源程序要有适当的注释,使程序容易阅读 (2)写出课程设计报告,具体要求见相关说明文档 功能要求: 由计算机“想”一个四位数,请人猜这个四位数是多少。人输入这个四位数后,计算机首先判断这四个数中有几个猜对了,并且在猜对的数字中又有几位位置也是对的,将结果显示出来,给人以提示,请人再猜,直到人猜出计算机所想的四位数为止。请编程实现该游戏,游戏结束时,显示人猜一个数用了几次。 提示:用库函数random()产生一个随机数。 如: Int z; z= random(9999); 41 生命游戏(????) 我们可以把计算机中的宇宙想象成是一堆方格子构成的封闭空间,尺寸为N的空间就有N*N个格子。而每一个格子都可以看成是一个生命体,每个生命都有生和死两种状态,如果该格子生就显示蓝色,死则显示白色。每一个格子旁边都有邻居格子存在,如果我们把3*3的9个格子构成的正方形看成一个基本单位的话,那么这个正方形中心的格子的邻居就是它旁边的8个格子。 每个格子的生死遵循下面的原则: ? 如果一个细胞周围有3个细胞为生(一个细胞周围共有8个细胞),则该细胞为生(即该细胞若原先为死,则转为生,若原先为生,则保持不变) 。 ? 如果一个细胞周围有2个细胞为生,则该细胞的生死状态保持不变; ? 在其它情况下,该细胞为死(即该细胞若原先为生,则转为死,若原先 21 为死,则保持不变设定图像中每个像素的初始状态后依据上述的游戏规则演绎生命的变化,由于初始状态和迭代次数不同,将会得到令人叹服的优美图案)。 42 盒子分形(???) 目的:递归是基本的算法思想和设计方法之一,也是数据结构重点讲授的部分,是许多算法的基础,对它们的理解和运用直接关系着其他算法的理解和应用。因此,熟练掌握递归是十分重要的。通过本题,应使学生加深对于递归方法的理解,提高运用递归解决问题的能力。 要求:分形是一种具有自相似性的现象,在分形中,每一组成部分都在特征上和整体相似,只不过仅仅是缩小了一些而已,一种盒子分形定义如下: (1)规模为1的盒子分形为 X (2)规模为2的盒子分形为 X X X X X (3)若用B(n - 1)表示规模为n-1的盒子分形,则规模为n的盒子分形为 B(n - 1) B(n - 1) B(n - 1) B(n - 1) B(n - 1) 你的任务是,输出规模为n的盒子分形。 22 例如,规模为3的盒子分形输出如下: X X X X X X X X X X X X X X X X X X X X X X X X X 43 迷宫问题(?????) 程序开始运行时显示一个迷宫地图,迷宫中央有一只老鼠,迷宫的右下方有一个粮仓。游戏的任务是使用键盘上的方向键操纵老鼠在规定的时间内走到粮仓处。 要求: ? 老鼠形象可辨认,可用键盘操纵老鼠上下左右移动; ? 迷宫的墙足够结实,老鼠不能穿墙而过; ? 正确 检测 工程第三方检测合同工程防雷检测合同植筋拉拔检测方案传感器技术课后答案检测机构通用要求培训 结果,若老鼠在规定时间内走到粮仓处,提示成功,否则提示失败; ? 添加编辑迷宫功能,可修改当前迷宫,修改内容:墙变路、路变墙; ? 找出走出迷宫的所有路径,以及最短路径; 利用序列化功能实现迷宫地图文件的存盘和读出等功能。 44 英文单词填空游戏(??) 问题描述:这是一款帮助学生背单词的小软件。建立单词库,可从单词库中随机抽取单词,并随机隐去该单词中的一些字母,在屏幕上显示带空格的单词,用户对空格处的字母进行补全,程序判断填补是否正确,并统计正确率。 编程任务: 23 ? 建立单词库,并可以方便地对单词库进行增加、删除。 ? 随机读取一个单词。 ? 随机隐去单词中的一些字母,规则是:长度为2,4空一个字母,5,7空二个字母,8,10空三个字母,11以上空四个字母。用随机数方式确定隐去哪几个位上的字母,并在屏幕上显示带空格单词。 ? 用户填充空格处的字母,程序判断填充是否正确。 ? 当用户结束游戏时,统计正确率,并输出相应的鼓励语句。 45 一字棋游戏设计实现(????) 设计实现一字棋游戏程序,人为一方,计算机为一方,人下时字符 * 将放在所指定的位置,而计算机下时字符 @ 将放在某一空格位置。行、列、或两对角线有连续三个相同字符一方为胜方,也有平局情况。要求能动态演示。 , , , , , , 46 扑克牌洗牌发牌过程模拟(???) 编写一个模拟人工洗牌的程序,将洗好的牌分别发给四个人。 使用结构card 来描述一张牌,用随机函数来模拟人工洗牌的过程,最后将洗好的52张牌顺序分别发给四个人。 对每个人的牌要按桥牌的规则输出。即一个人的牌要先按牌的花色(顺序为梅花、方块、红心和黑桃)进行分类,同一类的牌要再按A、K、Q、J、…、3、2牌的大小顺序排列。另发牌应按四个人的顺序依次分发。 注:C++随机数函数有: void srand(unsigned seed) 功能:函数可以设置rand函数所用得到随机数产生算法的种子值。任何大于1的种子值都会将rand随机数产生函数所产生的虚拟随机数序列重新设置一个起始点。 24 int rand(void) 功能:此函数可以产生介于0到32767间的虚拟随机数,所谓虚拟随机数的意思就是因为当只设置相同的启动种子值,所产生的数值序列都是可预测的。要产生不可预测的数值序列,必须通过srand函数不断改变随机数的启始种子值,已产生最佳的随机数。 头文件:stdlib.h 47 俄罗斯方块游戏(????) 编写一个俄罗斯方块游戏,使用图形界面,通过键盘控制方块的移动。 俄罗斯方块是由下面这几种形状的积木构成: 游戏规则为: 1. 积木块会从游戏区域上方开始缓慢落下。 2. 玩家可以做的操作有:90度旋转积木,左右移动积木块,或者让积木块加快落下。 3. 积木块移动到游戏区最下方或是落到其他积木块行无法移动时,就会固定在该处,而之后新的积木块就会出现在区域上方开始落下。 4. 当游戏区域中某一行格子全部由积木块填满,则该行会消失并成为玩家的得分。一次删除的行数越多,得分越多。 5. 当积木块堆到区域最上方,则游戏结束。 48 贪吃蛇游戏(????) 编写一个贪吃蛇游戏,使用图形界面,通过键盘控制蛇的移动 游戏规则为: 1. 游戏开始时,在游戏区域的固定位置出现贪吃蛇,随机的在区域内某个位置出现食物。 2. 贪吃蛇会自动沿着其头部的方向移动。 25 3. 玩家可以做的操作有:键盘控制蛇的上下左右移动,或者加快蛇的移动速度。 4. 当蛇遇到食物时,会把当前食物吃掉,并成为玩家的得分,新的食物会随机出现在区域内的某个位置上。 5. 当蛇遇到墙壁时,游戏结束。 加分部分: 1. 可以考虑增加关卡,不同的关卡,难度不同,例如蛇的移动速度增加等等。 2. 可以在游戏区域内增加障碍物,蛇碰到障碍物后游戏结束。 3. 在游戏区域增加障碍物的基础上,可以考虑让蛇在某种条件下能够毁坏障碍物,例如蛇吃掉某种特殊的食物后,具有暂时毁坏障碍物的能力。 49 打字游戏(???) 编写一个练习打字游戏,使用图形界面,练习打字 游戏规则为: 1. 游戏开始时,在游戏区域内随机出现若干个字母,并开始计时。 2. 用户根据出现的字母,通过键盘输入对应的字符。 3. 检测用户输入的字符,如果输入的字符在出现的字母中,则该字母消失,并记为用户的得分。 4. 字母从游戏区域的上方不断往游戏区域的底端移动,直到用户输入了正确的字符。当字母移动到游戏区域的底端后,字母消失。 5. 游戏时间到后,统计用户的正确率,给出该局游戏的得分。 50 2048游戏(???) 编写一个2048游戏,使用图形界面 游戏规则为: 1. 游戏开始时,初始一个16方格的棋盘,并在棋盘内随机出现两个数字,出现的数字只能是2或4。 2. 玩家可以选择上下左右四个方向,若棋盘内的数字出现位移或合并,视 26 为有效移动。 3. 玩家选择的方向上若有相同的数字则合并,每次有效移动可以同时合并,但不可以连续合并。 4. 合并所得的所有新生成数字想加即为该步的有效得分。 5. 玩家选择的方向行或列前方有空格则出现位移。 6. 每有效移动一步,棋盘的空位(无数字处)随机出现一个数字(依然可能为2或4) 7. 棋盘被数字填满,无法进行有效移动,判负,游戏结束 8. 棋盘上出现2048,判胜,游戏结束。 51 推箱子游戏(????) 编写一个推箱子游戏游戏,使用图形界面。推箱子游戏的目的是用最少的步数把所有的箱子推到目标位置。 游戏规则为: 1. 游戏开始时,在游戏区域内随机的出现箱子、障碍物、小人以及箱子的目标位置。 2. 箱子只可以被推动,不可以被拉动。 3. 用户通过键盘的来控制小人上下左右的移动来推动箱子。记录用户移动小人的次数。 4. 如果箱子被推到死角,则游戏结束。 5. 所有箱子被推到目标位置,游戏胜利。 加分部分: 1. 可以增加关卡,不同的关卡,难度不同。 2. 可以允许用户悔步,即用户可以选择取消上一次的移动。 52 红蓝棋游戏(???) 编写一个红蓝棋游戏,使用图形界面。 游戏规则为: 1. 游戏双方相互翻转对方棋子,以最后棋盘上棋子多者为胜。 27 2. 游戏使用一个8×8的方格棋盘,棋子下在空格中间,而不是像围棋一样 下在交叉点上。 3. 游戏开始时棋盘正中有两红、两蓝四个棋子交叉放置,总是红方先下子。 4. 以所落棋子为中心,若横、竖、斜等八个方向内有一个自己的棋子时, 则被夹在中间的对方棋子会全部被翻转成为己方棋子;而且只有在可以翻转对方 棋子的地方才可以落子。 5. 当棋盘格子落满棋子时,游戏结束,或者游戏双方都无法继续落子翻转 对方棋子时,游戏者可按Esc键来终止游戏,并输出当前的胜负信息。 53 让计算机来猜测用户“暗记”的某张扑克牌(??) 计算机从一副扑克牌(54张)中任意抽出27张,摆放在不同的三行上(每 行9张),用户―暗记‖某张纸牌,而后告诉计算机所―暗记‖的那张纸牌处于哪一 行中;之后计算机再两次将纸牌重新摆放,并让用户再回答两次相同的提问(那 张纸牌在重新摆放后又处在哪一行上);此时计算机会将用户所―暗记‖的那张纸 牌给挑出来。 、c、d代表例如,程序执行后的屏幕显示结果可设计为(其中的前缀a、b 四种不同的花色): ------------------------------------------------------------- Line 1: c-9 d-3 a-7 d-9 a-9 c-3 b-8 a-A d-7 Line 2: b-10 a-Q d-6 b-4 a-3 b-9 b-K c-A d-8 Line 3: KING2 d-A b-A a-4 a-2 b-7 d-5 c-7 a-8 ------------------------------------------------------------- Remember a card, and tell me what line it reside in(1/2/3): 3 ------------------------------------------------------------- Line 1: c-9 d-3 a-7 b-10 a-Q d-6 KING2 d-A b-A Line 2: d-9 a-9 c-3 b-4 a-3 b-9 a-4 a-2 b-7 Line 3: b-8 a-A d-7 b-K c-A d-8 d-5 c-7 a-8 ------------------------------------------------------------- What line the card you remembered reside in now (1/2/3) : 1 28 ------------------------------------------------------------- Line 1: c-9 b-10 KING2 d-9 b-4 a-4 b-8 b-K d-5 Line 2: d-3 a-Q d-A a-9 a-3 a-2 a-A c-A c-7 Line 3: a-7 d-6 b-A c-3 b-9 b-7 d-7 d-8 a-8 ------------------------------------------------------------- What line the card you remembered reside in now (1/2/3) : 1 ------------------------------------------------------------- Your remembered card is : KING2 提示: (1)要从一副54张的扑克牌中任意抽出27张,可通过―rand()%54‖所产生 的随机值来确定。但注意,一旦随机抽走哪张,下次牌中就没有这张了。 (2)程序总按照一种策略将三行纸牌重新―摆放‖,而后进一步让用户进行 指定。上述所谓的策略指的是,总将纸牌―一分为三‖:第一次要将每一行的9张 分散到不同的3行上(每行仅―剩‖3张),而第二次则要将上次―确定‖出的某3 张进一步分散到不同的3行上(每行只―剩‖1张。此时靠用户再指定一次行号则 可唯一确定所―暗记‖的那张纸牌)。 54 决策树算法实现(???) 简介:决策树是通过一系列规则对数据进行分类的过程。它提供一种在什么 条件下会得到什么值的类似规则的方法。它是一个从上到下、分而治之的归纳过 程,是决策树的一个经典的构造算法。应用于很多预测的领域,如通过对信用卡 客户数据构建分类模型,可预测下一个客户他是否属于优质客户。 分类过程:分类是数据挖掘、机器学习和模式识别中一个重要的研究领域。 数据分类是一个两步过程。第一步,使用已知类别标记的训练数据集建立一个分 类模型。例如:图1是一个决策树模型。第二步,对未知标记的数据使用模型进 行分类。例如,根据图1的决策树模型,运用自顶而下的属性测试过程,将表2 中的样例1-6分别分类为“Y”、“Y”、“Y”、“Y”、“N”、“N”。 29 天况 多云 雨 晴 Y 湿度 风况 无 有 大 正 常 Y N Y N 图1. 一个决策树模型的例子 算法描述: 输入:训练样例集S,未标记的节点T,属性集A 输出:以T为根的决策树 ? 如果S中所有样例都是正例,则标记节点T为―Y‖,并结束; ? 如果S中所有样例都是反例,则标记节点T为―N‖,并结束; ? 否则,从A中选择一个属性X,(可随机选)标记节点T为X; ? 设X的所有取值为V1, V2,„,Vn,依据这些取值将S划分为n个子集 S1, S2, „, Sn,建T的n个孩子节点Ti,并分别以Vi作为从T到Ti的分支标号; ? 对每对(Si,Ti,A-{X}),递归调用ID3算法建立一棵以Ti为根的子树; END 举例:对下表运用算法构建决策树 表1. 一个训练数据集 编号 天况 温度 湿度 风况 分类 1 晴 热 大 无 N 2 晴 热 大 有 N 3 多云 热 大 无 Y 4 雨 中 大 无 Y 5 雨 冷 正常 无 Y 6 雨 冷 正常 有 N 7 多云 冷 正常 有 Y 8 晴 中 大 无 N 9 晴 冷 正常 无 Y 30 10 雨 中 正常 无 Y 11 晴 中 正常 有 Y 12 多云 中 大 有 Y 13 多云 热 正常 无 Y 14 雨 中 大 有 N 对下列样例输入使用构建的决策树模型预测其分类属性: 表2. 一个待分类的数据集 编号 天况 温度 湿度 风况 分类 1 晴 热 正常 无 , 2 晴 热 正常 有 , 3 雨 热 正常 无 , 4 晴 中 正常 无 , 5 晴 冷 大 有 , 6 晴 冷 大 无 , 要求: ? 设计合理的数据结构,编程实现决策树构造算法; ? 给定训练数据集,运用构建的决策树模型,设计合理的文件格式,保存于外存之中; ? 设计决策树分类算法,根据保存在外存的决策树模型,实现决策树的分类过程,完成对未知类别属性数据样例的分类。 55 集合运算(???) 问题描述: 设有两个用单链表表示的集合A、B,其元素类型是int且以递增方式存储,其头结点分别为a、b。要求下面各问题中的结果集合同样以递增方式存储,结果集合不影响原集合。 实现要求: ? 编写集合元素测试函数IN_SET,如果元素已经在集合中返回0,否则 31 返回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个。 56 字符串处理函数(??) 设计要求: (1) 只能使用C语言,源程序要有适当的注释,使程序容易阅读 (2) 至少采用文本菜单界面(如果能采用图形菜单界面更好) (3) 写出课程设计报告,具体要求见相关说明文档 功能要求: (1)编写求字符串长度函数,函数原型为:int strlen(char *p) (2)编写字符串复制函数,函数原型为:void strcpy(char *p1,char *p2) (3)编写字符串比较函数,函数原型为:int strcmp(char *p1,char *p2),返回值为第一个不相同字符的ASCII码差。) (4)在主函数中根据用户需要调用不同的函数功能。 57 统计符号(??) 题目要求: 输入三行文字,找出其中有多少个空格和多少个单词(规定单词间以一个或多个空格分开)。若一个单词恰好在行末结束,则下一行的开头应有空格,句号和逗号后面也应有空格。 32 主要功能包括: (1)用菜单界面实现; (2)输入三行文字; (3)输出空格数、单词数; (4)退出系统 58 三角形计算(???) 设有任意正三角形ABC,其三条边BC、CA,AB上分别有一点A1、B1、C1,而且有AC1=2C1B,BA1=2A1C,CB1=2B1A。编制程序验证由线段AA1、BB1、CC1相交而成的三角形A2B2C2的面积是正三角形ABC的面积的七分之一。 C A1 B1 AB C1 59 八数码问题(?????) 八数码问题又称重排九宫问题,在一个3,3的棋盘上,随机放置1到8的数字棋子,剩下一个空位,如图所示。数字可以移动到空位(编程时,空位可用0代替,且可以理解为是空位的上、下、左、右移动),经过若干次移动后,棋局到达指定目标状态。 33 一种初始状态 说明:重排九宫问题,对任意给定初始状态,可达下图所示两个目标之一,不可互换。 目标一:如下图G 目标一G 目标二:如下图G1或G2 目标二G1 目标二G2 提示: 可用数组表示棋局状态。用函数表示空格(0)的移动,使用函数具有前提条件,满足条件才可以使用。 34 用广度优先或深度优先搜索求解。还可以使用启发式求解,以提高搜索效率。 要求: ? 编程求解问题; ? 给出中间状态; ? 给出解序列(函数调用序列) 60 字符串距离(????) 目的:字符串是一种基础且广泛使用的数据结构,与字符串相关的题目既可以考察基本程序设计能力和技巧,也可以考查较强算法设计能力。 题目:求字符串之间距离 要求:设有字符串X,称在X的头尾及中间插入任意多个空格后构成的新字符串为X的扩展串,如字符串X为―abcbcd‖,则字符串―abcb?cd‖,―?a?bcbcd?‖和―abcb?cd?‖都是X的扩展串,这里―?‖代表空格字符。 如果A1是字符串A的扩展串,B1是字符串B的扩展串,A1与B1具有相同的长度,那么定义字符串A1与B1的距离为相应位置上的字符的距离总和,而两个非空格字符的距离定义为它们的ASCII码的差的绝对值,而空格字符与其它任意字符之间的距离为已知的定值K,空格字符与空格字符的距离为0。在字符串A、B的所有扩展串中,必定存在两个等长的扩展串A1、B1,使得A1与B1之间的距离达到最小,将这一距离定义为字符串A、B的距离。请编写程序,求出字符串A、B的距离。 61 实现带有括号的四则运算(????) 输入是一个带有括号的四则运算表达式,输出是计算得出的正确计算结果。例如:输入:123+213-67*34+345/23*45*(34+34-345+245+567)回车,然后程序计算得出结果为:359183 62 线性方程组求解(????) 输入是N(N<256)元线性方程组Ax=B,输出是方程组的解,也可能无解或有多组解。可以用高斯消去法求解,也可以采用其它方法。 35 63 猴子吃桃问题(??) 五只猴子一起摘了一堆桃子,因为太累,五只猴子决定先睡一觉再分。不久,其中一只猴子醒来了,它见别的猴子没有醒来,便将一堆桃子平均分成 5 份,结果多了一个,就将多的这个吃了,拿走其中的一份并离开。又不久,第二只猴子醒来了,它不知道有一个同伴已经拿走过桃子,便又将剩下的桃子平均分成 5 份,发现也多了一个,同样吃了这一个,拿走其中的一份。如此类推第3只,第4只,第5 只猴子都是这样分、吃、拿走。问这5只猴子至少摘了多少个桃子, 根据上述描述,编制程序解决问题。 64 数组处理(??) 问题描述:随机产生三个数组,并将前两个数组按由小到大的顺序排序,然后将它们合并到第四个数组中(合并后的数组仍然有序)。最后在第四个数组中,删除在第三个数组中出现过的元素,并删除第四个数组中的多余元素。 65 过河问题(????) 一个人带有一只羊, 一框菜和一只狼要过河, 但船上除了载一人以外, 最多每次只能再带一样东西。而当人不在场的情况下, 羊和菜在一起, 羊要吃菜, 狼和羊在一起, 狼会吃羊。问怎样安排, 人才可以安全地把三样东西都运过河去。 36 八 课程设计报告模板 8.1 系统分析与系统设计 “分析就是在采取行动之前,对问题的研究”(Demarco,1978)。系统分析在软件开发过程中是非常重要的,其任务就是通过对问题本身的研究,产生一个系统需要做什么的规范的、一致的和可行的需求说明。在此基础上,确定系统中所需考虑的类(对象)、类之间的关系、本系统中各个类所涉及的属性及针对这些属性的操作。类及类之间的关系可用类图来表示,对象之间的消息传递可用箭头表示,另外一些重要的操作应给出规格说明。 8.2详细设计与编码 对类中的属性和操作从实现的角度(如可扩充、在派生类中能否直接使用或只需少量修改、访问的效率和方便性等)进一步考察;对类中的操作(即方法)进一步求精:用if、while、for和赋值语句加上自然语言写出算法框架;同时考虑能否使用已有类库(包括直接使用或通过派生)以减少编程的工作量和提高程序的可靠性。 编码,即程序设计,是对详细设计的结果的进一步求精,用面向对象语言(如C++)表达出来。在充分理解和把握语言运行机制的基础上,编写出正确的、清晰的、易读易改和高效率的程序。另外,在标识符的命名、代码的长度(一个方法长度一般不超过40行,否则应划分为两个或多个方法)、程序书写的风格(如缩进格式、空格(空行)的应用、注释等)方面也应注意,遵循统一的规范。 8.3上机调试和测试 上机时要带一本面向对象语言的教材,若有开发环境的用户指南(手册)及类库(库函数)手册则更好。应仔细阅读程序编译和连接时的错误信息(通常是英文的),弄清其确切含义,提高调试效率。要学习并掌握开发环境所提供的调试工具。 经过调试,能够运行的的程序并非就是一个正确的程序。实际上,在上机之前,就应根据系统的需求设计相应的测试数据集,特别是一些异常情况的处理(如用户输入数据未按指定格式、数据极大或极小时程序如何处理等一些极端的情况)。 8.4撰写课程设计报告 课题设计实现完成后,按规范要求撰写课程设计报告,报告一般要求阐述的内容如下: 1. 需求和规格说明 描述问题,简述题目要解决的问题是什么,规定软件做什么。原题条件不足时补全 37 2. 设计 (1) 设计思想:程序结构(如类图),重要的数据结构。主要算法思想(文字描述,不要画框图) (2) 设计表示:类名及其作用,类中数据成员名称及作用,类中成员函数原型及其功能,可以用表格形式表达。 (3) 实现注释:各项要求的实现程度、在完成基本要求的基础上还实现了什么功能, (4) 详细设计表示:主要算法的框架及实现此算法的成员函数接口。 3. 用户手册 即使用说明(包括数据输入时的格式要求)。 4. 调试及测试 调试过程中遇到的主要问题是如何解决的;对设计和编码的回顾讨论和分析;程序运行的时空效率分析;测试数据集;运行实例;改进设想;经验和体会等。 5. 附录 (1) 源程序清单:打印文本和磁盘文件,磁盘文件是必须的。源程序要加注释,除原有注释外再用钢笔加一些必要的注释和断言。 (2) 测试数据:即列出测试数据集 (3) 运行结果:上面测试数据输入后程序运行的结果 可以根据设计课题的实际情况对以上内容进行增减。 8.5课程设计报告模版 38 (报告封面) “程序设计基础” 课程设计报告 设计题目 小型公司人员信息管理系统 姓 名 学 号 专 业 39 班 级 完成日期 (一) 需求和规格说明 某小型公司,主要有四类人员:经理、技术人员、销售经理和推销员。要求存储这些人员的姓名、编号、级别、当月薪水,计算月薪总额并显示全部信息。 人员编号基数为1000,每输入一个人员的信息,编号顺序加1。 程序要对所有人员有提升级别的功能。为简单起见,所有人员的初始级别均为1级,然后进行升级,经理升为4级,技术人员和销售经理升为3级,推销员仍为1级。 月薪计算办法是:经理拿固定月薪8000元;技术人员按每小时100元领取月薪;推销员的月薪按该推销员当月销售额的4%提成;销售经理既拿固定月薪也领取销售提成,固定月薪为5000元,销售提成为所管辖部门当月销售总额的5?。 (二) 设计 根据上述需求,设计一个基类employee,然后派生出technician(技术人员)类、manager(经理)类和salesman(推销员)类。由于销售经理(salesmanager)既是经理又是销售人员,兼具两类人员的特点,因此同时继承manager和salesman两个类。 在基类中,除了定义构造函数和析构函数以外,还应统一定义对各类人员信息都应有的操作,这样可以规范各派生类的基本行为。但是各类人员的月薪计算方法不同,不能在基类employee中统一定义计算方法。各类人员信息的显示内容也不同,同样不能在基类中统一定义显示方法。因此,在employee类中用纯虚函数的方式定义了计算月薪函数pay()和显示信息函数displayStatus(),然后在派生类中再根据各自的同名函数实现具体的功能。 由于salesmanager的两个基类又有公共基类employee,为避免二义性,这里将employee类设计为虚基类。 40 employee char *name int individualEmpNo; int grade; float accumPay; static int employeeNo; virtual void pay(); void promote(int); vitual void displayStatus(); technician manager salesman float hourlyRate float monthlyPay float CommRate; int workHours float sales; virtual void pay(); virtual void pay(); virtual void pay(); vitual void vitual void vitual void displayStatus(); displayStatus(); displayStatus(); salesmanager virtual void pay(); vitual void displayStatus(); 图1 系统类图 表1 属性和方法定义 类名 成员类别 类型 成员名 描述 雇员姓名 char * name 个人编号 int individualEmpNo 级别 int grade 属性 月薪总额 float accumPay 本公司雇员编号目前最大int employeeNo employee 值 计算月薪函数(为纯虚函void pay() 数) 方法 升级函数 void promote(int) 显示人员信息(为纯虚函void DisplayStatus() 数) 41 表2 属性和方法定义2 类名 成员类别 类型 成员名 描述 每小时酬金 float hourlyRate 属性 当月工作时数 int workHours technician accumPay=hourlyRate*workvoid pay() 方法 Hours 显示技术人员信息 void DisplayStatus() 属性 固定月薪数 float monthlyPay manager void pay() AccumPay=monthlyPay 方法 显示经理信息 void DisplayStatus() 按销售额提取酬金百分比 float CommRate 属性 当月销售额 float sales salesman void pay() accumPay=sales*CommRate 方法 显示推销员信息 void DisplayStatus() 属性 accumPay=monthlyPay+Comsalesmanager void pay() 方法 mRate*sales 显示销售经理信息 void DisplayStatus() (三) 用户手册 程序运行时,首先提示输入雇员姓名。 对于经理直接输出其工资及其它信息; 对于技术人员,程序提示输入其本月工作时数,然后输出其工资及其它信息; 对于推销员,程序提示输入其本月销售额,然后输出其工资及其它信息; 对于销售经理,程序提示输入其管辖部门本月销售总额,然后输出其工资及其它信息。 (四) 调试及测试 由于公司每增加一个雇员,无论他(她)是哪一类人员,其编号均是顺序加1,也就是employee类的所有派生类对象创建时,都要访问同一个employeeNo,因此将employeeNo定义为静态数据成员。 (五) 运行实例: please input employee's name: zhang please input employee's name: wang please input employee's name: Li please input employee's name: zhao input zhang the workHours of this month: 56 Technician: zhang No: 1001 month salary: 5600 Technician: zhang No: 1001 grade: 3 this month salary: 5600 Manager: wang No: 1002 month salary: 8000 Manager: wang No: 1002 grade: 4 this month salary: 8000 input Li the sales of this month: 47900 42 Salesman: Li No: 1003 month salary: 1916 Salesman: Li No: 1003 grade: 1 this month salary: 1916 input zhao the total sales of the department of this month: 123654 salesman: zhao No: 1004 month salary: 5618.27 salesmanager: zhao No: 1004 grade: 3 this month salary: 5618.27 (六)进一步改进 (1)目前程序中,经理月薪,技术人员的小时酬金和销售人员的销售额提成比 例均是固定的,这不适应不同公司的需要,可考虑用带参数的构造函数来解决。 (2)销售经理月薪计算中,要输入其管辖部门当月销售总额。实际上,这可以 通过将本部门所有推销员销售额相加而得到。可以考虑在推销员类中增加所属部门 等属性来完成这方面的功能。 (七)心得体会 (可描述课程设计过程中出现的主要问题、原因及解决方法,课程设计的主要 收获等) (八)对课程设计的建议 (九)附录,,源程序 43 九 版权说明 未经合肥工业大学宣城校区信息工程系允许,任何组织与个人不得擅自将该题目上传至因特网及公开。 44
本文档为【C语言程序设计基础-程序设计基础课程设计-2015-宣信程序设计教研组】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_219945
暂无简介~
格式:doc
大小:150KB
软件:Word
页数:0
分类:生活休闲
上传时间:2017-10-06
浏览量:267