题目
在选美大奖赛的半决胜赛现场,有一批选手参加比赛,比赛的规则是最后得分越高,名次越
低。当半决决赛结束时,要在现场按照选手的出场顺序宣布最后得分和最后名次,获得相同
分数的选手具有相同的名次,名次连续编号,不用考虑同名次的选手人数。例如:
选手序号: 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()
{