C 语言程序设计 大作业题目
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
哈尔滨工业大学(威海)2019 / 2020 学年 春 季学期
比赛结果,因而成为乒乓球比赛经常采用的方法。其不足之处在于相对来讲耗时较多,特别是在参赛人数多而比赛时间短的情况下不宜采用。乒乓球比赛一般多采用单循环和分级循环:1.1、单循环
参赛的人或队都要互相轮流比赛1次的方法。单循环比赛的轮数计算:当参赛人数或队数为单数时,轮数等于人(队)数;参赛人数为双数时,轮数等于人(队)数减1。单循环比赛的计算方法是:获胜次数多者名次列前,如有2个或2个以上的运动员获胜次数相同时,则依次由他们之间场数胜负比率、局数胜负比率、分数胜负比率的顺序来决定。
1.2、分组循环
这是将若干人(队)分成几个小组,在各小组内进行循环方法,其特点是要以节省时间,在参赛人数多且比赛时间短的情况下采用。分组循环一般用于团体赛,可将所有参赛队用蛇形方法分组,如12个队参赛可分成A、B两组:
A组:1 4 5 89 12
B组:2 367 10 11
上列数字是各队的顺序号,它是按各队实力强弱排列的,序号小者实力强,反之实力弱。 2、淘汰制
淘汰制就是比赛中失败一次即退出比赛,获胜者继续比赛,直到决出冠亚军为止。这种竞赛方法的特点是节省时间,竞争性强,能使比赛越来越精彩,但也有偶然性。
2.1 单淘汰
所谓单淘汰是指将所有参赛选手编成一定的比赛顺序,由相近的两名选手进行比赛,胜者进
入下一轮,负者即遭淘汰。
2.2双淘汰
双败淘汰制与普通的淘汰制输掉一场即被淘汰不同,参赛者只有在输掉两场比赛后才丧失争夺冠军的可能。双败淘汰制的比赛一般分两个组进行,胜者组与负者组。在第一轮比赛后,获胜者编入胜者组,失败者编入负者组继续比赛。之后的每一轮,在负者组中的失败者将被淘汰;胜者组的情况也类似,只是失败者仅被淘汰出胜者组降入负者组,只有在负者组中再次失败(即总共有两次失败)后才会被淘汰出整个比赛。
每一轮败者组的比赛又分为两个阶段。第一个阶段,由当前败者组中的幸存者相互对阵,负者被淘汰,胜者进入第二个阶段;第二个阶段,由第一阶段中败者组的胜者对阵刚刚在本轮由胜者组中淘汰下来的选手。
以一个8名选手参加的双败淘汰制比赛为例:
第一轮比赛:四场比赛后,各自有4名选手依据结果编入胜者组或败者组
第二轮比赛:胜者组4名选手相互比赛,败者编入败者组,败者组选手在第一阶段先相互比赛,并淘汰掉2名选手,剩下的2名选手再进入第二阶段,与刚在胜者组淘汰到败者组的2名选手比赛,获胜的2名进入第三轮。
第三轮比赛(即败者组决赛):败者组剩下的这2名选手在第一阶段先淘汰掉1名(已累积二败绩),剩下1名进入第二阶段,对阵胜者组决赛中的失败者,败者组决赛中的胜者(到此仅败过1场)将与胜者组决赛中的胜者(到此从未败过),争夺最后的冠军。
在胜者组第一名与败者组第一名最后决赛时,任何一方胜利即获得最终的冠军。
细节说明
方案C最高分85,方案B最高分95分,方案A最高分100分。没有达到指定要求的在最高得分的基础上减去一定的分值。其他细节扣分点包括但不限于如下几点:
1)命令行下输入的候选人姓名要求是不能重复的,也就是不能有两个参赛选手姓名相
同
2)如果程序运行中要输入姓名,要求参赛选手的姓名对大小写不敏感,也就是A l ice
与a l ice是同一个人,B O B 与b o b是同一个人
3)如果程序运行中要输入比分,比分必须要验证是合理的。
4)命令行中输入参赛人数量时要求验证在题目给定的范围内,如果不在这个范围要求
退出重新运行程序
5)编程前需要斟酌好数据结构,如果数据结构选择不当,导致程序特别复杂或者程序
运行效率降低的会被扣分
6)可以适当使用全局变量
方案C
2020年要举行新一年的乒乓球比赛了,假设去年比赛有两名种子选手今年继续参赛(姓名在命令行中输入,名字各不相同),种子选手要尽量安排在比赛的最后阶段遇到。今年比
赛的选手总数([4-16])和选手名单(名字各不相同)在程序运行时输入。请按照单淘汰的赛制随机列出一份所有比赛场次的比赛名单,每场比赛都是3局2胜制,每场比赛的结果在程序运行阶段输入。每轮比赛前,打印出两两对阵名单,比赛后要输入各场比赛的结果,然后打印出下轮比赛的名单,直到决出今年的前冠亚军为止。程序要求打印出冠军的名字。如果选手数量是单数,可能会轮空,轮空算晋级获胜处理。
请按照题目要求自行设计数据类型和算法,要求每次运行同样的数据输出的结果不一样。 程序运行如:
$./g a m e A l ice Bo b
Num b er of g a m er s:4
G a m er 1:M i k e
G a m er 2:M arr y
G a m er 3: C h ar l ie
G a m er 4: Da v e
(…比赛过程掠过)
A l ice i s t h e wi nn er!
以上紫色字体是命令行输入的字符串,红色字体是程序输出的提示信息,黑色字体是运行程序时输入的参赛者姓名,中间的比赛过程略过了,绿色字体是最终的执行结果。
方案B
2020年要举行新一年的乒乓球比赛了。今年比赛的选手总数([4-6])和选手名单(名字各不相同)在程序运行前作为命令行输入。比赛采用5局3胜的单循环制,每个人都和其他所有人对局,胜负的计算方法是:获胜场数多者名次列前,最后如有2个或2个以上的运动员获胜次数相同时,则由他们净胜局数的顺序来决定,如果还一样就按照他们俩之间的那场对局的胜负决定谁是冠军,如果形成连环套,抽签随机决定名次。请在每轮比赛前,打印出两两对阵名单,每场比赛后要输入比赛的结果,然后打印出所有运动员已经赢得的场次数(按照从大到小的顺序排序),直到决出冠军后按照名次打印出所有人的名字。如果选手数量是单数,可能会轮空,轮空算晋级获胜处理。
请按照题目要求自行设计数据类型和算法,要求每次运行程序对决安排的名单随机。
程序执行如下:
$./g a m e 4 A l ice Bo b C h ar l ie Da v e
以上紫色字体是命令行输入的字符串.
方案A
2020年要举行新一年的乒乓球比赛了。今年比赛的选手总数([8-16])和选手名单(名字各不相同)在程序运行前通过命令行输入。请按照双败淘汰制随机列出一份初始比赛名