龙空技术网

c语言计算选美比赛

额度Y 177

前言:

如今小伙伴们对“c语言分数怎么表示”大概比较关切,小伙伴们都需要学习一些“c语言分数怎么表示”的相关知识。那么小编在网摘上网罗了一些有关“c语言分数怎么表示””的相关知识,希望看官们能喜欢,你们快快来了解一下吧!

题目要求:

在选美比赛的现场,有一批选手参加比赛,比赛的规则是最后得分越高,名次越低。当比赛结束时,要在现场按照选手的出场顺序(即选手的序号)宣布最后得分和最后名次,获得相同分数的选手具有相同的名次,名次连续编号,不用考虑同名次的选手人数。例如:

选手序号为: 1,2,3,4,5,6,7

选手得分为: 5,3,4,7,3,5,6

则输出名次为: 3,1,2,5,1,3,4

请编程帮助大赛组委会完成比赛的评分和排名工作。

需要掌握的知识是排序算法,可以去了解顺序排序、折半排序、快速、冒泡等,都是编程经常用到的知识点。

#include "stdio.h"struct player{  int num;  int score;  int rand;} ;void sort(struct player psn[],int n){	int i;	printf("num   score rand  \n");	for(i=0;i<n;i++)  //按分数排序    {        printf("%d%6d%6d\n",psn[i].num,psn[i].score,psn[i].rand);    }}void  sortScore(struct player psn[],int n) //按分数排序{   int i,j;   struct player tmp;   for(i=0;i<n-1;i++)    for(j=0;j<n-1-i;j++)    {        if(psn[j].score>psn[j+1].score)        {            tmp = psn[j];            psn[j] = psn[j+1];            psn[j+1] = tmp;        }    }	sort(psn,n);}void setRand(struct player psn[],int n)//分配名次排序{    int i,j=2;    psn[0].rand=1;    for(i=1;i<n;i++)    {        if(psn[i].score!=psn[i-1].score )        {            psn[i].rand=j;            j++;        }        else        psn[i].rand=psn[i-1].rand;    }	sort(psn,n);}void  sortNum(struct player psn[],int n)//选手好排序{   int i,j;   struct player tmp;   for(i=0;i<n-1;i++)    for(j=0;j<n-1-i;j++)    {        if(psn[j].num>psn[j+1].num)        {            tmp = psn[j];            psn[j] = psn[j+1];            psn[j+1] = tmp;        }    }}void sortRand(struct player psn[],int n){   sortScore(psn,n);        	/*以分数为关键字排序*/   setRand(psn,n);          	/*按照分数排名次*/   sortNum(psn,n);         	/*按照序号重新排序*/}main(){   struct player psn[7]={{1,5,0},{2,3,0},{3,4,0},{4,7,0},   {5,3,0},{6,5,0},{7,6,0}};	/*初始化测试数据*/   int i;   sortRand(psn,7);   /*   printf("num   score rand  \n");   for(i=0;i<7;i++)   {        printf("%d%6d%6d\n",psn[i].num,psn[i].score,psn[i].rand);   }*/   sort(psn,7);   getche();}

运行结果:

运行结果

标签: #c语言分数怎么表示