7-72 学生成绩排序 (20分)

给出一组学生名单(姓名和成绩),请输出按成绩从大到小排序后的结果(名次和姓名)。成绩相同的人拥有相同的名次,且按姓名的字典序从小到大排列。题目保证学生姓名没有重复。

输入格式:

第一行给出不大于10000的整数N。 接下来N行,每行给出学生姓名和成绩,以空格分隔。学生姓名不超过20个字符。

输出格式:

共输出N行,每行包含对应的学生排名和姓名,以空格分隔。

输入样例:

7
KongDezhen 94
FuTaotao 93
HuYu 94
XuJiecen 94
WuSuqi 96
ChenDa 93
HuNianbo 95

输出样例:

1 WuSuqi
2 HuNianbo
3 HuYu
3 KongDezhen
3 XuJiecen
6 ChenDa
6 FuTaotao

#include<stdio.h>
#include<string.h>
struct student{char name[25];int num;
};
int cmp(struct student a,struct student b)//比较函数
{if(a.num==b.num)return strcmp(a.name,b.name)>0;else return b.num>a.num;
}
int main()
{int n,i,j;scanf("%d",&n);struct student a[11111],b;for(i=0;i<n;i++){scanf("%s",a[i].name);scanf("%d",&a[i].num);}for(i=0;i<n;i++)//冒泡排序进阶for(j=i+1;j<n;j++){if(cmp(a[i],a[j])){b = a[i];a[i] = a[j];a[j] = b;}}int t=1;for(i=1;i<=n;i++){printf("%d %s\n",t,a[i-1].name);if(a[i].num!=a[i-1].num){t=i+1;}}}

这题的第一个难点主要是需要在给成绩排序的同时还要给名字的首字母排序。所以建立一个比较函数较为便捷,然后符合cmp函数的条件就进行排序,其实就是冒泡排序的进阶

第二个难点是排名的问题,若成绩相同排名相同,其实排名还是按照名次的,仔细揣摩一下我最后是如何排的,挺基础的一个解决方式。

PTA学生成绩排序-C语言详解相关推荐

  1. python输入学生年龄_Python实现按学生年龄排序的实际问题详解

    前言 本文主要给大家了关于利用Python按学生年龄排序的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 问题:定义一个Class:包含姓名name.性别gender.年龄a ...

  2. python循环输入若干学生信息保存到字典、并按学号排序,Python实现按学生年龄排序的实际问题详解...

    怎样用python进行年龄分段并且分享和排序?小编努力地向远方,站在高处,曾经是为了让你一眼看见小编,后来为了可以看见更多的人. ,怎样用最简单的Python语言将具体的年纪进行分段并且统计各年龄段d ...

  3. 用C语言学生成绩数据库排序功能设计,[c语言学生成绩管理系统]C语言学生成绩管理系统实验报告...

    篇一 : C语言学生成绩管理系统实验报告 实 验 四:结构体(6学时) 实验目的: 1.更加灵活的使用数组作为函数参数: 2.初步掌握开发一个小型实用系统的基本方法: 3.初步掌握书写程序设计开发文档 ...

  4. c语言用链表对学生成绩排序,学生成绩排序和平均分计算利用c语言链表的创建插入删除.doc...

    #define NULL 0 #define LEN sizeof(struct student) struct student { long num; float score; struct stu ...

  5. c语言学生成绩表排序,C语言-学生成绩排序

    问题描述:学生成绩排序.输入n(n<50)个学生的成绩排名,按照学生平均成绩从高到低输出他们的信息 源代码: /*学生成绩排序*/ /*输入n(n<50)个学生的成绩排名,按照学生平均成绩 ...

  6. 克鲁斯卡尔算法c语言,Kruskal算法(一)之 C语言详解

    最小生成树 在含有n个顶点的连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的最小生成树. 例如,对于如上图G4所示的连通网可以有多棵权值总和 ...

  7. 按平均成绩排行c语言文件操作,学生成绩管理系统(c语言结构体以及文件操作)实验报告精选.doc...

    学生成绩管理系统(c语言结构体以及文件操作)实验报告精选 C程序设计 实验报告 编号: 姓名院系学号任课教师于萧指导教师实验地点实验时间实验名称文件操作同 组 人无预习报告(对实验主要内容的认识)得分 ...

  8. 排座系统c语言,2008noip排座位C语言详解.doc

    2008noip排座位C语言详解 2008noip排座位C语言详解 2.排座椅 (seat.pas/c/cpp)D对同学上课时会交头接耳.同学们在教室中坐成了M行N列,坐在第i行第j列 的同学的位置是 ...

  9. 有向图邻接矩阵c语言编程,邻接矩阵有向图(一)之 C语言详解

    本章介绍邻接矩阵有向图.在"图的理论基础"中已经对图进行了理论介绍,这里就不再对图的概念进行重复说明了.和以往一样,本文会先给出C语言的实现:后续再分别给出C++和Java版本的实 ...

最新文章

  1. Python 学习日记 第八天
  2. 51nod 1138 连续整数的和(数学公式)
  3. 【新媒体讨论】关联趋势和“就是不服”
  4. 轻松删除所有安装的gem
  5. react antd 动态表单
  6. boost::cv_status相关的测试程序
  7. java容器输入_Java 容器一些知识
  8. AOP原理解析及Castle、Autofac、Unity框架使用
  9. iso8601 转换 java_java积累----ISO8601格式时间转化为Datetime类型
  10. JavaScript中的call、apply、bind如何使用
  11. POJ 2817 状态DP 字符串找最多的重复
  12. 自动驾驶红旗车,背后站着小马哥
  13. PAT 1032 (未完成)
  14. 如何使用CodeBlocks开发C/C++程序
  15. 牛逼!支付宝 App架构
  16. PKI体系和数字证书
  17. 【腾讯软件测试面试经历】一面、二面、HR终面
  18. 根据硬件ID查看摄像头型号方案,可查任何一款摄像头芯片来源
  19. android中bitmap压缩的几种方法详解
  20. 10个激光、超声波测距方案带你玩转测距传感器

热门文章

  1. php mysqldb 数据库切换,Python MySQLdb模块连接操作mysql数据库实例
  2. java 线程 while循环_java多线程中while循环的问题
  3. 揭秘更加开放的数据库服务:阿里云数据库专属集群
  4. 图灵“亲自”给你讲人工智能
  5. Flutter瀑布流及通用列表解决方案
  6. android handler作用,3.2.4 Handler的作用
  7. java就是我的幸福,嫁给幸福
  8. 【JavaScript脚本】——T2事件操作
  9. python jieba库用法
  10. 主从同步设置的重要参数log_slave_updates