前言:
如今小伙伴们对“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语言分数怎么表示