P1004 成绩排名
转跳点:
这道题就比较简单了,大概就考察了结构体的使用,也没有其他的了,连排序的必要的没有。让我们来看一下题目

同样,需求很明显,要输出最高分和最低分人的学号姓名。那这样子处理方案就很明显了,先把数据输进去再用qsort排个序,输出数组第一个和最后一个,完事。不过我们得知道 stdlib 里的 去sort如何使用给或者是自己写一个排序算法。排序算法和qsort我在博客其他文章里有介绍,在这里不做赘述,转跳U•ェ•*U。
代码如下:
1 #include <stdio.h>
2 #include <stdlib.h>
3 #define MAX_SIZE 12
4 #define MAX_STD_SEIZE 150
5
6 typedef struct data
7 {
8 char name[MAX_SIZE];
9 int ID[MAX_SIZE];
10 int Mark;
11 } STD;
12
13 int cmp(const void *a, const void *b);
14
15 int main()
16 {
17 int n, i = 0;
18 int Min_Mark = 100, Max_Mark = 0;
19 int Min_Pos, Max_Pos;
20 scanf("%d", &n);
21 STD Student[MAX_STD_SEIZE];
22
23 for (int i = 0; i < n; i++)
24 {
25 scanf("%s %s %d", Student[i].name, Student[i].ID, &Student[i].Mark);
26 getchar();
27 }
28 qsort(Student, n, sizeof(Student[0]), cmp);
29 printf("%s %s\n", Student[0].name, Student[0].ID);
30 printf("%s %s\n", Student[n-1].name, Student[n-1].ID);
31
32 return 0;
33 }
34
35 int cmp(const void *a, const void *b)
36 {
37 return (* (STD *) a).Mark > (* (STD *) b).Mark ? -1 : 1;
38 }
内置快排
其实这道题不一定要排序,我们可以在输入的时候定义四个变量分别存储最大值、最小值、最大值索引,最小值索引。输入完就选出了最高分最低分,时间复杂度为O(n),比O(nlogn)的快排更加省事。
代码如下
1 #include <stdio.h>
2 #include <stdlib.h>
3 #define MAX_SIZE 12
4 #define MAX_STD_SEIZE 150
5
6 typedef struct
7 {
8 char name[MAX_SIZE];
9 int ID[MAX_SIZE];
10 int Mark;
11 } STD;
12
13 int main()
14 {
15 int n, i = 0;
16 int Min_Mark = 100, Max_Mark = 0;
17 int Min_Pos, Max_Pos;
18 scanf("%d", &n);
19 STD Student[MAX_STD_SEIZE];
20
21 while (n--)
22 {
23
24 scanf("%s %s %d", Student[i].name, Student[i].ID, &Student[i].Mark);
25 if (Min_Mark > Student[i].Mark)
26 {
27 Min_Pos = i;
28 Min_Mark = Student[i].Mark;
29 }
30 if (Max_Mark < Student[i].Mark)
31 {
32 Max_Pos = i;
33 Max_Mark = Student[i].Mark;
34 }
35 i++;
36 getchar();
37 }
38
39 printf("%s %s\n", Student[Max_Pos].name, Student[Max_Pos].ID);
40 printf("%s %s\n", Student[Min_Pos].name, Student[Min_Pos].ID);
41
42 return 0;
43 }
好了,还是那句话
——前路多艰,诸君共勉!
P1004 成绩排名的更多相关文章
- mysql成绩排名
关于mysql成绩排名,网上大部分只是order by简单排序,忽略了成绩相同并列名次的问题. 定义了一个表score结构为:
- PAT乙级 1004. 成绩排名 (20)
1004. 成绩排名 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 读入n名学生的姓名.学号.成绩,分 ...
- PAT-乙级-1004. 成绩排名 (20)
1004. 成绩排名 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 读入n名学生的姓名.学号.成绩,分 ...
- PHP中通过sqlsrv调用存储过程——成绩排名去除重复字段的数据行
培训考试项目中,需要实现考试成绩排名:排名参考项为分数(score降序).参加日期(attendtime升序).第几次参加考试(frequency升序):并且,每个用户只保留一条数据(pid). 考试 ...
- 福州大学软件工程1916|W班 第6次作业成绩排名
作业链接 团队第三次-项目原型设计 评分细则 博客评分标准 在随笔开头,备注小组同学的学号.(1') 文字准确.样式清晰.图文并茂.字数在1000字左右.(10') 原型模型必须采用专用的原型模型设计 ...
- 福州大学软件工程1916|W班 第3次作业成绩排名
作业链接 结对第二次-文献摘要热词统计及进阶需求 评分细则 本次作业由三部分组成(程序满分80,博客满分70,工程能力满分30) 程序评分标准 基础需求 共有7个测试用例,每个满分20分并按照一定的映 ...
- 福州大学软件工程1816 | W班 第1次作业成绩排名
1.作业地址 第一次作业--准备篇 2.作业要求 (1)回想一下你初入大学时对计算机专业的畅想 当初你是如何做出选择计算机专业的决定的? 你认为过去两年中接触到的课程是否符合你对计算机专业的期待,为什 ...
- 福州大学软件工程1816 | W班 第2次作业成绩排名
作业链接 词频统计基础功能 评分细则 本次个人项目分数由两部分组成(博客分满分40分+程序得分满分60分) 博客评分规则 在文章开头给出你们Fork仓库的Github项目地址.(1') 在开始实现程序 ...
- 福州大学软件工程1816 | W班 第3次作业成绩排名
写在前面 汇总成绩排名链接 1.作业链接 第三次作业--原型设计(结对第一次) 2.评分准则 本次作业总分 25分,由以下部分组成: (1)在随笔开头请加上该博客链接,以方便阅读时查看作业需求,并备注 ...
随机推荐
- HTML标签,CSS简介
一 http://www.w3school.com.cn/tags/tag_span.asp
- Uart学习笔记
分享一个蛮好的链接:https://blog.csdn.net/wordwarwordwar/article/details/73662379 今天在看的资料是S家的DW_apb_uart的官方文档. ...
- Linux centosVMware zabbix主动模式和被动模式、添加监控主机、添加自定义模板、处理图形中的乱码、自动发现
一.主动模式和被动模式 主动或者被动是相对客户端来讲的 被动模式,服务端会主动连接客户端获取监控项目数据,客户端被动地接受连接,并把监控信息传递给服务端 主动模式,客户端会主动把监控数据汇报给服务端, ...
- linux搭建mysql时ifconfig命令无法使用问题
刚搭建好的Centos 最小安装模式是没有ifconfig命令的.改变步骤:一:使用语句:cd /etc/sysconfig/network-scripts/二:使用语句vi ifcfg-eno167 ...
- Python 之网络编程之socket(2)黏包现象和socketserver并发
一:黏包 ###tcp协议在发送数据时,会出现黏包现象. (1)数据粘包是因为在客户端/服务器端都会有一个数据缓冲区, 缓冲区用来临时保存数据,为了保证能够完整的接收到数据,因此缓冲区 ...
- Centos7 nginx的负载均衡概念与配置
一.负载均衡概念 负载均衡(Server Load Balancer)是将访问流量根据转发策略分发到后端多台 ECS 的流量分发控制服务.负载均衡可以通过流量分发扩展应用系统对外的服务能力,通过消除单 ...
- 五、Centos7安装mysql:第一步查看系统有无mysql,然后删除之
CentOS下MySQL的彻底卸载 原创 2015年10月12日 00:16:02 标签: 21149 编辑 删除 #################CentOS7下MySQL的卸载######### ...
- 服务端OLEVARIANT数据之后传输
将OLEVARIANT数据流化,然后对流进行压缩,还原成OLEVARIANT以后再发送. procedure StreamToVariant(Stream: TStream; var V: OLEVa ...
- 每日算法 - day 15
每日算法 those times when you get up early and you work hard; those times when you stay up late and you ...
- java并发:join源码分析
join join join是Thread方法,它的作用是A线程中子线程B在运行之后调用了B.join(),A线程会阻塞直至B线程执行结束 join源码(只有继承Thread类才能使用) 基于open ...