选美比赛
2016-06-13 15:46
197 查看
在选美大奖赛的半决胜赛现场,有一批选手参加比赛,比赛的规则是最后得分越高,名次越低。当半决决赛结束时,要在现场按照选手的出场顺序宣布最后得分和最后名次,获得相同分数的选手具有相同的名次,名次连续编号,不用考虑同名次的选手人数。例如 选手序号: 1,2,3,4,5,6,7,选手得分: 5,3,4,7,3,5,6,则输出名次为: 3,1,2,5,1,3,4,请编程帮助大奖赛组委会完成半决赛的评分和排名工作。
#include <stdio.h> typedef struct{ int num; int score; int rank; }Player; Player temp; void scoreSort(Player player[],int n){ //按照分数由小到大排序 for(int i=0;i<n-1;i++){ for(int j=0;j<n-i-1;j++){ if(player[j].score > player[j+1].score){ temp = player[j]; player[j] = player[j+1]; player[j+1] = temp; } } } } void setRank(Player player[],int n){ //以分数为标准设定名次 player[0].rank = 1; int k = 2; for(int j=0;j<n-1;j++){ if(player[j].score != player[j+1].score){ player[j+1].rank = k; k++; }else{ player[j+1].rank = player[j].rank; } } } void numSort(Player player[],int n){ //按编号排序 for(int i=0;i<n-1;i++){ for(int j=0;j<n-i-1;j++){ if(player[j].num > player[j+1].num){ temp = player[j]; player[j] = player[j+1]; player[j+1] = temp; } } } } void sort(Player player[],int n){ scoreSort(player,n); setRank(player,n); numSort(player,n); for(int i=0;i<n;i++){ printf("%d,%d,%d ",player[i].num,player[i].score,player[i].rank); } printf("\n"); } int main(){ Player player[] = {{1,5,0},{2,3,0},{3,4,0},{4,7,0},{5,3,0},{6,5,0},{7,6,0}}; sort(player,7); return 0; }
相关文章推荐
- 关于wmare虚拟机作为php服务器,主机无法ping通虚拟机,以及显示Fullcalendar日历
- 软件开发环境-开发环境、测试环境、生产环境的区别
- 路由器接口配置与管理——1
- 通过netstat+rmsock查找AIX端口对应进程
- PowerDesigner之导入sql文件 生成数据库物理模型
- Tcpdump命令行 与 GUI Wireshark
- 你知道为什么下载的HTML5模版打开非常缓慢?
- opencv(c++)学习笔记1
- 谷歌tensorflow基本概念
- Hbase: IllegalArgumentException: No columns to insert
- ios的状态栏(UIStatusBar)
- 结合源代码分析一个完整的中断过程
- Android百度地图应用之创建显示地图
- BootStrap智能表单实战系列(十一)级联下拉的支持
- 3DTouch实现
- #define相关
- [转载]SQL自定义函数
- ctags vim csrope
- jquery源码--isArraylike merge makeArray
- Android Studio 更新升级之增量升级