7-2 歌唱比赛计分 (10分)pta C语言

该博客介绍了一个歌唱比赛的计分系统,使用C语言编程。系统接受10名歌手的6位评委打分,计算每位歌手扣除最高分和最低分后的平均得分,并按得分高低顺序输出歌手的编号和最终得分。

设有10名歌手(编号为1-10)参加歌咏比赛,另有6名评委打分,每位歌手的得分从键盘输入,计算出每位歌手的最终得分(扣除一个最高分和一个最低分后的平均分),最后按最终得分由高到低的顺序输出每位歌手的编号及最终得分
输入格式:
依次输入第1个歌手的6位评委打分(10分制,分数为整型,分数之间使用空格分隔),第2个歌手的6位评委打分…以此类推。
输出格式:
参照输出示例,按最终得分由高到低的顺序输出每位歌手的编号及最终得分(最终得分保留2位小数)。
输入样例:
1 4 7 3 6 3
8 7 8 5 9 8
7 5 6 8 5 4
7 6 7 5 6 5
3 5 6 7 5 5
7 7 7 8 9 6
7 7 6 7 6 8
9 4 3 7 3 6
4 8 6 7 5 8
8 7 8 8 9 8
输出样例:
No.10: 8.00
No.2 : 7.75
No.6 : 7.25
No.7 : 6.75
No.9 : 6.50
No.4 : 6.00
No.3 : 5.75
No.5 : 5.25
No.8 : 5.00
No.1 : 4.00

代码实现:
————————————————

#include<stdio.h> 
#include<stdlib.h>
typedef struct {
   
   
	int num;
	int score[6];
	float ave; 
}singers;

int main(){
   
   
	int i,j,k,n;

	singers *p,t;
	
	p=(singers*)malloc(sizeof(singers)*10); 
	
	for
<think>好的,我现在需要处理用户关于歌唱比赛方法及实现的问题。用户想了解相关的计分方法和程序,所以首先得确定常见的评方法有哪些,以及如何具体实施。根据以往的知识,常见的评方法包括平均法、去掉最高最低的平均法、加权评法,可能还有基于标准差的方法。 接下来,我需要调用网络搜索工具来确认这些方法的具体细节,确保信息准确。比如,平均法是否直接取所有评委的平均值,去掉最高最低的方法是否有不同的变体,比如去掉一个还是多个极端。加权评的话,可能评委的权重不同,比如专业评委和大众评委的区别。 然后,实现这些方法的程序部需要考虑编程语言,比如Python,因为用户可能需要代码示例。需要写出如何用Python计算平均,如何处理去掉最高最低后的平均值,以及如何实现加权评。同时,用户提到的数学公式和代码格式必须严格遵守,比如变量用$符号包裹,代码用三个反引号注明语言类型。 还需要注意回答的结构,点列出方法,每个方法下详细说明步骤和可能的公式,再给出代码示例。比如,方法一是平均法,公式是$\text{平均} = \frac{\sum_{i=1}^{n} s_i}{n}$,然后代码展示如何计算。方法二去掉极端值,可能涉及到排序后切片。方法三的加权评需要处理权重数组的点积。 另外,用户要求避免使用步骤词汇如“首先”、“然后”,所以需要用其他方式组织内容,比如每个方法作为独立的部,换行隔。同时,不能将引用集中在末尾,所以每个方法中的信息需要自然整合,可能来自不同的搜索结果,但需要综合成连贯的说明。 最后,生成相关问题时要基于用户的问题和回答内容,可能涉及其他评方法、防止作弊的策略、现场实时计分的技术实现等。需要确保问题相关且有逻辑联系,数量至少三个,格式正确,标号使用阿拉伯数字,标题在同一行。 现在需要验证这些思路是否覆盖了用户的所有要求,特别是格式和内容结构。例如,数学公式是否正确使用$符号,代码是否用正确的语法标注,是否有方法说明,每个方法是否有解释和代码,相关问题是否符合要求等。确认无误后,整合搜索到的信息和知识,生成符合要求的回答。</think>针对歌唱比赛方法及实现,主流的计分方法可为以下三种常见模式: **1. 平均法** 计算公式:$\text{平均} = \frac{\sum_{i=1}^{n} s_i}{n}$,其中$s_i$为评委数,$n$为评委人数。此方法适用于小型比赛或评委水平均衡的场景。 ```python scores = [9.2, 9.5, 9.3, 9.6, 9.4] average = sum(scores) / len(scores) ``` **2. 去极值平均法** 剔除$k$个最高和$k$个最低后计算平均值。公式:$\text{修正} = \frac{\sum_{i=k+1}^{n-k} s_{(i)}}{n-2k}$,其中$s_{(i)}$为排序后的数。常用于大型专业赛事: ```python scores_sorted = sorted(scores) k = 1 # 去除1个最高和1个最低 trimmed = scores_sorted[k:-k] result = sum(trimmed)/len(trimmed) ``` **3. 加权评法** 不同评委组配不同权重,公式:$\text{加权} = \sum_{j=1}^{m} w_j \cdot \bar{s}_j$,其中$w_j$为评委组权重,$\bar{s}_j$为组内平均。适用于混合评委团场景: ```python professional = [9.6, 9.7, 9.5] audience = [9.2, 9.3, 9.4] weights = [0.7, 0.3] # 专业评委权重70% pro_avg = sum(professional)/len(professional) aud_avg = sum(audience)/len(audience) final = pro_avg*weights[0] + aud_avg*weights[1] ``` **实现注意事项** - 使用Decimal类型处理浮点运算精度 - 增加数校验模块(如0-10范围验证) - 设计异常处理机制应对无效评输入 - 大型赛事建议采用区块链技术记录评过程
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值