头歌c语言实训项目-综合案例课外练习:大奖赛现场统分

news2024/11/16 9:37:21

 (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹)

目录

第1关:大奖赛现场统分 

题目:

代码思路:

代码表示:


第1关:大奖赛现场统分 

题目:

大奖赛现场统分

以往各类大奖赛的报分与统分脱节,参赛选手的最后得分总要等到下一个选手赛完后才报,影响竞赛的正常节奏,也不能满足观众的期待心理。现在请为某大奖赛编写一个现场统分程序,在各评委打分之后,及时通报评分结果。同时,为了给评委一个约束,有利于竞赛评判的公正,要求增加给评委打分和排序的功能。

已知:某大奖赛有 n 个选手参赛,m(m>2)个评委依次为参赛的选手评判打分,最高10分,最低0分。统分规则为:在每个选手所得的 m 个得分中,去掉一个最高分,去掉一个最低分,取平均分为该选手的最后得分。要求编程实现:

  1. 根据 n 个选手的最后得分,从高到低排出名次表,以便确定获奖名单;
  2. 根据各选手的最后得分与各评委给该选手所评分的差距,对每个评委评分的准确性给出一个定量的评价。

代码思路:

这题看着很复杂,实际上源代码已经给了我们很多提示,我们只需要根据源代码的提示,补全  Sort()函数和CountJudgeScore()函数即可

注意:本题的难点在于不仅要考虑选手的评分,还要顺带考虑其编号,二者缺一不可

对于Sort()函数,我们只需要用冒泡排序即可(http://t.csdn.cn/mmU9w)

对于CountJudgeScore()函数,我们首先可以从 CountAthleteScore()函数中得知评委的评分储存在数组f[ ]中,并且是以f[i*m+j]的形式表示每个评委对同一个选手的评分,那么我们在统计评委时就可以反过来用f[j*m+i]表示评委对每个选手的评分,然后根据题目提示里面给出的公式进行计算即可,最后不要忘了对每个评委的进行编号

代码表示:

#include  <stdio.h>
#include  <math.h>
#define ATHLETE	40           						//选手人数最高限
#define JUDGE 	20           						//评委人数最高限
void  CountAthleteScore(int sh[], float sf[], int n, float f[], int m);
void  Sort(int h[], float f[], int n);
void  Print(int h[], float f[], int n);
void  CountJudgeScore(int ph[],float pf[],int m,float sf[],float f[],int n);
int main(void)
{
	int  j, m, n;
	int  sh[ATHLETE];  							//选手的编号数组
	int  ph[JUDGE];   							//评委的编号数组
	float  sf[ATHLETE];  						//选手的最后得分
	float  pf[JUDGE];    						//评委的得分
	float  f[ATHLETE][JUDGE]; 					//评委给选手的评分
	printf("How many Athletes?");
	scanf("%d", &n);                      			//输入选手人数
	printf("How many judges?");
	scanf("%d", &m);                      			//输入评委人数
	for (j=1; j<=m; j++)  
	{
		ph[j] = j;
	}
	printf("Scores of Athletes:\n");
	CountAthleteScore(sh, sf, n, *f, m); 		//现场为选手统计分数
	printf("Order of Athletes:\n");
	Sort(sh, sf, n);                      			//选手得分排序
	Print(sh, sf, n);                     			//打印选手名次表
	printf("Scores of judges:\n");
	CountJudgeScore(ph, pf, m, sf, *f, n); 		//为各个评委打分
	printf("Order of judges:\n"); 
	Sort(ph, pf, m);                      			//评委得分排序
	Print(ph, pf, m);                     			//打印评委名次表
	printf("Over!Thank you!");
	return 0;
}
//函数功能:统计参赛选手的得分
//函数参数:整型数组sh,存放选手的编号
//          实型数组sf,存放选手的最后得分
//	   	   整型变量n, 存放参赛选手的人数
//	   	   实型数组f, 存放每个评委给选手的评分
//	   	   整型变量m, 存放评委的人数
//函数返回值:无
void  CountAthleteScore(int sh[], float sf[], int n, float f[], int m)
{
	int  i, j;
	float  max, min;
	for (i=1; i<=n; i++)
	{
		printf("\nAthlete %d is playing." , i);
		printf("\nPlease enter his number code:");
		scanf("%d", &sh[i]);
		sf[i] = 0;
		max = 0;
		min = 100;
		for (j=1; j<=m; j++)
		{
				printf("Judge %d give score:", j);
				scanf("%f", &f[i*m+j]);
				sf[i] = sf[i] + f[i*m+j];
				if (max < f[i*m+j]) 
				{
					max = f[i*m+j];
				}
				if (min > f[i*m+j]) 
				{
					min = f[i*m+j];
				}
		}
		printf("Delete a maximum score:%.3f\n", max);
		printf("Delete a minimum score:%.3f\n", min);
		sf[i] = (sf[i] - max - min) / (m - 2);
		printf("The final score of Athlete %d is %.3f\n", sh[i], sf[i]);
	}
}
//函数功能:对分数从高到低排序
//函数参数:整型数组h,存放编号
//          实型数组f,存放最后得分
//	        整型变量n,存放参评人数
//函数返回值:无
void Sort(int h[], float f[], int n)
{
	/*************** Begin ***************/
	 int i,j;
    float t;
    for(i=1;i<=n-1;i++)
    {
        for(j=i+1;j<=n;j++)
        {
            if(f[i]<f[j])
            {
                t=f[i];
                f[i]=f[j];      //交换成绩
                f[j]=t;
                t=h[i];
                h[i]=h[j];      //交换编号
                h[j]=t;
            }
        }
    }

	/*************** End ***************/
}
//函数功能:输出名次表
//函数参数:整型数组h,存放编号
//          实型数组f,存放最后得分
//	        整型变量n,存放参评人数
//函数返回值:无
void Print(int h[], float f[], int n)
{
	int  i;
	printf("number\tfinal score\torder\n");
	for (i=1; i<=n; i++)
	{
			printf("%6d\t%11.3f\t%5d\n", h[i], f[i], i);
	}
}
//函数功能:统计评委的得分
//函数参数:整型数组ph,存放评委的编号
//          实型数组pf,存放评委的得分
//	        整型变量m, 存放评委的人数			
//	        实型数组sf,存放选手的最后得分
//	        实型数组f, 存放每个评委给选手的评分	
//	        整型变量n, 存放参赛选手的人数		
//函数返回值:无
void CountJudgeScore(int ph[],float pf[],int m,float sf[],float f[],int n)
{
	/*************** Begin ***************/
	 int i,j;
    float s,t;
    for(i=1;i<=m;i++)
    {
        s=0;
        for(j=1;j<=n;j++)
        {
            t=(f[j*m+i]-sf[j])*(f[j*m+i]-sf[j]);
            s+=t;
        }
        s=s/n;
        s=sqrt(s);
        pf[i]=10-s;
        ph[i]=i;
    }
    for(i=1;i<=m;i++)
    {
        printf("Judge %d give score:%.3f\n",ph[i],pf[i]);
    }
	/*************** End ***************/
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/446135.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【看图识文】tesseract.js@4.0.2

看图识文 介绍示例一示例二示例三示例四示例五示例六 介绍 该库用于识别并获取图片上的文字&#xff0c;支持多种语言。对英文识别度非常高&#xff0c;但是对中文的识别度非常一般。需要单独训练对应的中文库。对白纸黑字的合同文识别度还不错&#xff0c;其他的都不太好。 …

Android之编写申请权限库PermissionX

比如要实现拨打电话的功能&#xff0c;一般我们要编写如下Android运行时权限API class MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)if(ContextCom…

日撸 Java 三百行day35

文章目录 说明day35 图的 m 着色问题1.问题描述2.思路2.代码 说明 闵老师的文章链接&#xff1a; 日撸 Java 三百行&#xff08;总述&#xff09;_minfanphd的博客-CSDN博客 自己也把手敲的代码放在了github上维护&#xff1a;https://github.com/fulisha-ok/sampledata day3…

JUC安全/非安全容器

一、JUC java.util.concurrent下的类就叫JUC类&#xff0c;JUC下典型的类有&#xff1a; 1.ReentrantLock可重入锁 2.Semaphore信号量 3.CountDownLatch计数器 4.CyclicBarrier循环屏障 二、线程安全&非安全容器 2.1非线性安全容器 2.2线性安全容器 三、关于HashMap ha…

【谷歌浏览器 -- Vimium 常用快捷键】

文章目录 1.1.1 标签页管理1.1.2 网页操作1.1.3 打开链接1.1.4 搜索1.1.5 自定义搜索引擎短语1.1.6 Vimimu 使用注意事项 Vimium 是一款用键盘控制 Chrome 浏览器的 Chrome 插件, 可以在 Chrome 应用商店下载到. 下面列出个人比较习惯使用的几个快捷键。 1.1.1 标签页管理 [ x…

【C语言】基础语法4:函数和递归

上一篇&#xff1a;控制流程结构 下一篇&#xff1a;数组和指针 ❤️‍&#x1f525;前情提要❤️‍&#x1f525;   欢迎来到C语言基本语法教程   在本专栏结束后会将所有内容整理成思维导图&#xff08;结束换链接&#xff09;并免费提供给大家学习&#xff0c;希望大家…

Cookie、Session、Token的区别

1 网站交互体验升级 1.1 无状态的 http 协议 HTTP 无状态协议&#xff0c;是指协议对于业务处理没有记忆能力&#xff0c;之前做了啥完全记不住&#xff0c;每次请求都是完全独立互不影响的&#xff0c;没有任何上下文信息。 缺少状态意味着如果后续处理需要前面的信息&…

基于蛋白-配体复合物构建药效团的药物设计(Pharmacophore)

基于蛋白-配体复合物构建药效团的药物设计&#xff08;Pharmacophore&#xff09; step 1.蛋白-配体复合物准备 点击File-->Import Structures导入之前已经下载好的1IEP.pdb&#xff08;Abl蛋白和Imatinib的晶体复合物&#xff09; 蛋白准备&#xff1a;点击Tasks--->…

【数据集实例】CMIP6气候模式数据下载-以河东地区为例

1 数据准备 主要根据研究区域等,介绍下载数据需求。 1.1 研究区域 以甘肃省河东地区为例,分区图如下所示: 数据时间范围如下所示: 历史时段:1970-2014年(共44年)预估时段:2015-2100年此外,根据研究内容,确定下载的变量为: 日尺度降水:缩写为pr日尺度最高/最低温…

OrCAD创建原理图库

OrCAD创建原理图库 概述常规器件建库方法大封装器件建库基于pinout表格创建原理图库导入方法&#xff1a; 通过fsp软件导入fpga原理图库 概述 原理图库是硬件设计的基本工作&#xff0c;每个新人都要先学会建库&#xff0c;才能开始画图&#xff0c;本文主要介绍几种常用的建库…

Linux多线程-4

在了解完多线程的绝大部分概念之后&#xff0c;我们本篇博客作为Linux多线程中的最后一篇博客&#xff0c;来对其中剩余内进行一个收尾。 目录 1.线程池 1.1引入 1.2原理 1.3优点 1.4实现 2.单例模式 2.1内容 2.2原理 2.3实现 2.3.1饿汉模式实现 2.3.2懒汉模式实现…

Web3技术入门向科普

Web3是指下一代互联网&#xff0c;它基于区块链技术&#xff0c;将各种在线活动更加安全、透明和去中心化。Web3是一个广义的概念&#xff0c;它包括了很多方面&#xff0c;如数字货币、去中心化应用、智能合约等等。在这篇文章中&#xff0c;我们将重点讨论Web3的入门知识&…

Opencv+Python笔记(四)图像的形态学处理

1.腐蚀与膨胀 膨胀用来处理缺陷问题&#xff0c;把缺陷填补掉&#xff0c;提高亮区面积&#xff1b; 腐蚀用来处理毛刺问题&#xff0c;把毛刺腐蚀掉&#xff0c;降低亮区面积。 腐蚀操作可以消除噪点&#xff0c;同时消除部分边界值&#xff0c;导致目标图像整体缩小。 膨胀…

轻松掌握安装k8s官方可视化界面工具知识点

轻松掌握安装k8s官方可视化界面工具知识点 1、安装 1、安装资源 kubernetes官方提供的可视化界面 https://github.com/kubernetes/dashboard 执行以下命令 kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml…

RocketMq集群搭建

各个角色介绍&#xff1a; producer&#xff1a;消息的发送者&#xff1b;举例&#xff1a;发信者consumer&#xff1a;消息的接受者&#xff1b;举例&#xff1a;收信者broker&#xff1a;暂存和传输消息&#xff1b;举例&#xff1a;邮局NameServer&#xff1a;管理Broker&am…

PWM输出实验

实验内容 使用TIM3来产生PWM输出 使用TIM3的通道2&#xff0c;把通道2重映射到PB5.产生PWM来控制DS0的亮度。 PWM简介 脉冲宽度调制&#xff08;PWM&#xff09;&#xff0c;简称脉宽调制&#xff0c;是利用微处理器的数字输出来对模拟电路进行控制的一种有效方法。 脉冲波…

excle表格打印相关问题

ps&#xff1a;无论是打印word,还是打印excel, 最后最好都保存成pdf&#xff0c;再打印。 ps&#xff1a;无论是打印word,还是打印excel, 最后最好都保存成pdf&#xff0c;再打印。 ps&#xff1a;无论是打印word,还是打印excel, 最后最好都保存成pdf&#xff0c;再打印。 …

Android修改头像之拍照、从相册选择、裁剪

手写一个修改头像的需求&#xff0c;头像图片支持手机拍照裁剪和从相册选择图片裁剪&#xff1b; 实现效果&#xff1a; 本节主要内容&#xff1a; 1&#xff09;头像修改对话框实现&#xff1b; 2&#xff09;调用系统相机拍照&#xff1b; 3&#xff09;自定义图片裁剪页…

centos7 配置LNMP环境

文章目录 LNMP环境的搭建LNMP工作流程FastCGI接口配置LNMP部署环境配置环境测试安装 Discuz LNMP环境的搭建 随着我们 Nginx web 服务器的流行&#xff0c;又出现了我们叫做 LNMP 的一种新的 web 环境服务组合。LNMP 就是 Linux Nginx Mysql PHP 等首字母的缩写。现在&…

STL学习+acwing 67 数字在排序数组中出现的次数

题目链接 67. 数字在排序数组中出现的次数 传统暴力解法 class Solution { public:int getNumberOfK(vector<int>& nums , int k) {int c0;for(int i0;i<nums.size();i){if(nums[i]k)c;}return c;} };容器的应用 set和multiset两个容器有一个count函数 set 为…