news 2026/1/29 8:43:36

华为OD机试真题双机位C卷 【评委评分】C语言实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
华为OD机试真题双机位C卷 【评委评分】C语言实现

评委评分

2025华为OD机试双机位C卷 - 华为OD上机考试双机位C卷 100分题型

华为OD机试双机位C卷真题目录点击查看: 华为OD机试双机位C卷真题题库目录|机考题库 + 算法考点详解

题目描述

一个有N个选手参加比赛,选手编号为1~N(3<=N<=100),有M(3<=M<=10)个评委对选手进行打分。

打分规则为每个评委对选手打分,最高分10分,最低分1分。

请计算得分最多的3位选手的编号。 如果得分相同,则得分高分值最多的选手排名靠前

(10分数量相同,则比较9分的数量,以此类推,用例中不会出现多个选手得分完全相同的情况)。

输入描述

第一行为半角逗号分割的两个正整数,第一个数字表示M(3<=M<=10)个评委,第二个数字表示N(3<=N<=100)个选手。

第2到M+1行是半角逗号分割的整数序列,表示评委为每个选手的打分,0号下标数字表示1号选手分数,1号下标数字表示2号选手分数,依次类推。

输出描述

选手前3名的编号。

注:若输入异常,输出-1,如M、N、打分不在范围内。

用例1

输入

4,5 10,6,9,7,6 9,10,6,7,5 8,10,6,5,10 9,10,8,4,9

输出

2,1,5

说明

第一行代表有4个评委,5个选手参加比赛

矩阵代表是4*5,每个数字是选手的编号,每一行代表一个评委对选手的打分排序,

2号选手得分36分排第1,1号选手36分排第2,5号选手30分(2号10分值有3个,1号10分值只有1个,所以2号排第一)

用例2

输入

2,5 7,3,5,4,2 8,5,4,4,3

输出

-1

说明

只有2个评委,要求最少为3个评委。

用例3

输入

4,2 8,5 5,6 10,4 8,9

输出

-1

说明

只有两名选手参加

用例4

输入

4,5 11,6,9,7,8 9,10,6,7,8 8,10,6,9,7 9,10,8,6,7

输出

-1

说明

第一个评委给第一个选手打分11,无效分数

题解

思路

考点:字符串处理 + 字符串排序

  1. 自定义结构体Person,存储每个选手的编号、总分和各分数数量。
  2. 接收输入数据,记录每个选手获得的总分以及获得各种评分的数量。
  3. 自定义排序:按照总分进行从大到小排序,总分相等按照高评分数量进行排序
  4. 输出排序之后的前3名选手下标。

额外注意:接收输入n , m以及每个选手打分的score的数据范围时判断是否合法。不合法直接输出-1.

code

#include<stdio.h>#include<string.h>#include<stdlib.h>#defineMAX_M10#defineMAX_N100typedefstruct{intid;// 选手编号inttotalScore;// 总分intscore[11];// 各分数数量 1~10}Person;// 排序函数:先按总分降序,再按高分数量降序intcompare(constvoid*a,constvoid*b){Person*p1=(Person*)a;Person*p2=(Person*)b;if(p2->totalScore!=p1->totalScore)returnp2->totalScore-p1->totalScore;for(inti=10;i>=1;i--){if(p2->score[i]!=p1->score[i])returnp2->score[i]-p1->score[i];}return0;}intmain(){intM,N;if(scanf("%d,%d\n",&M,&N)!=2)return0;// 检查合法性if(M<3||M>10||N<3||N>100){printf("-1\n");return0;}Person sports[MAX_N];// 初始化for(inti=0;i<N;i++){sports[i].id=i+1;sports[i].totalScore=0;memset(sports[i].score,0,sizeof(sports[i].score));}charline[500];for(intj=0;j<M;j++){if(!fgets(line,sizeof(line),stdin))return0;intidx=0;// 进行输入根据,分割并进行合法性检验char*token=strtok(line,",");while(token!=NULL){intscore=atoi(token);if(score<1||score>10){printf("-1\n");return0;}sports[idx].totalScore+=score;sports[idx].score[score]++;idx++;token=strtok(NULL,",");}}// 自定义排序规则qsort(sports,N,sizeof(Person),compare);// 输出结果printf("%d,%d,%d\n",sports[0].id,sports[1].id,sports[2].id);return0;}

其它语言题解链接

华为OD机试双机位C卷 - 评委评分 (C++ & Python & JAVA & JS & GO)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/17 20:39:17

10. 同局域网内远程控制另一台电脑

目标&#xff1a; 两台 Windows 家庭版笔记本&#xff0c;在同一 Wi-Fi 下&#xff0c;用 RustDesk 局域网远控 ✅ 不走公网 ✅ 不依赖官方服务器 ✅ 延迟接近本地 ✅ 可扩展到自建服务器一、RustDesk 的“通信模型” 先知道 RustDesk 到底是怎么连的&#xff0c;否则你不知道什…

作者头像 李华
网站建设 2026/1/7 23:33:20

iPerf新手攻略:快速搭建网络测试环境!

搭建网络测试环境是性能评估的第一步&#xff0c;而iPerf因其跨平台兼容性和易用性&#xff0c;成为新手入门的首选工具。无论是Windows、Linux还是macOS&#xff0c;都能快速安装并运行iPerf&#xff0c;完成网络性能测试。本文将手把手教你搭建iPerf测试环境&#xff0c;从服…

作者头像 李华
网站建设 2026/1/14 21:09:04

linux上redis升级

linux上redis升级 redis版本升级。 我原本的redis 版本是6.2.1&#xff0c;现在就对他做一下升级处理。 1、下载redis 源码包&#xff1a; redis 下载地址 根据下载地址选择自己要安装的redis 版本的源码包。这里我下载的是 redis-6.2.6.tar.gz。 这里你可以先下载到本地&am…

作者头像 李华