评分与排名题目描述:在PK造船大赛的半决赛现场,有一批选手(假设为7人)参加比赛,并有5位评委给选手打分。打完分后,所有评委分数的和为该选手的最后得分。排名次有一条规则是:最后得分越高,名次越低(靠前)。当半决赛结束时,要在现场按照选手的出场顺序宣布最后得分和最后名次,获得相同分数的选手具有相同的名次,名次连续排,不用考虑同名次的选手人数。请编程实现组委会的评分和排名工作。输入:7行,每行5个数,表示5个评委对7位选手的评分。输出:2行,第1行为7位选手的最后得分(按出场顺序);第2行为每位选手的最后排名。
代码如下:
#include <stdio.h>
int main()
{
int a[7][5],i,j,t;
int total[7],pm[7],mc=1,index[7];
for(i=0;i<7;i++)
{
total[i]=0;
index[i]=i;
for(j=0;j<5;j++)
{
scanf("%d",&a[i][j]);
total[i] += a[i][j];
}
}
//显示总成绩
for(i=0;i<7;i++)
{
if(i<6)
printf("%d ",total[i]);
else
printf("%d\n",total[i]);
}
//根据总成绩排名
for (i=0;i<6;i++)
{
for (j=0;j<6-i;j++)
{
if(total[j]<total[j+1])
{
t=total[j];
total[j]=total[j+1];
total[j+1] = t;
//交换索引
t = index[j];
index[j]=index[j+1];
index[j+1]=t;
}
}
}
//显示名次
t = index[i];
pm[t] = mc;
for (i=1;i<7;i++)
{
t = index[i];
if(total[i]== total[i-1])
{
pm[t]=mc;
}else
{
mc++;
pm[t]=mc;
}
}
for (i=0;i<7;i++)
{
if(i<6)
printf("%d ",pm[i]);
else
printf("%d\n",pm[i]);
}
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!