C趣味算法--选美大赛

该博客介绍了一个C语言编程问题,涉及选美大赛的评分规则,其中得分越高排名越低。当选手得分相同时,名次相同。文章通过分析题目要求,指出常规排序方法不适用,提出了使用辅助数组来保持原始顺序并处理相同得分的方法。博客提供了完整的代码实现,并预期展示运行结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

在选美大奖赛的半决胜赛现场,有一批选手参加比赛,比赛的规则是最后得分越高,名次越
低。当半决决赛结束时,要在现场按照选手的出场顺序宣布最后得分和最后名次,获得相同
分数的选手具有相同的名次,名次连续编号,不用考虑同名次的选手人数。例如:
选手序号: 1,2,3,4,5,6,7
选手得分: 5,3,4,7,3,5,6
则输出名次为: 3,1,2,5,1,3,4
请编程帮助大奖赛组委会完成半决赛的评分和排名工作。

题目分析

问题用程序设计语言加以表达的话,即为:将数组A中的整数从小到大进行连续编号,要求
不改变数组中元素的顺序,且相同的整数要具有相同的编号。
普通的排序方法均要改变数组元素原来的顺序,显然不能满足要求。为此,引入一个专门存
放名次的数组,再采用通常的算法:在尚未排出名次的元素中找出最小值,并对具有相同值
的元素进行处理,重复这一过程,直到全部元素排好为止。

完整代码源

#include<stdio.h>
#define NUM 7 /*定义要处理的人数*/
int a[NUM+1]={0,5,3,4,7,3,5,6}; /*为简单直接定义选手的分数*/
int m[NUM+1],l[NUM+1]; /*m:已编名次的标记数组 l:记录同名次元素的下标*/
int main()
{
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值