转跳点:

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

  

  同样,需求很明显,要输出最高分和最低分人的学号姓名。那这样子处理方案就很明显了,先把数据输进去再用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 成绩排名的更多相关文章

  1. mysql成绩排名

    关于mysql成绩排名,网上大部分只是order by简单排序,忽略了成绩相同并列名次的问题. 定义了一个表score结构为:

  2. PAT乙级 1004. 成绩排名 (20)

    1004. 成绩排名 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 读入n名学生的姓名.学号.成绩,分 ...

  3. PAT-乙级-1004. 成绩排名 (20)

    1004. 成绩排名 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 读入n名学生的姓名.学号.成绩,分 ...

  4. PHP中通过sqlsrv调用存储过程——成绩排名去除重复字段的数据行

    培训考试项目中,需要实现考试成绩排名:排名参考项为分数(score降序).参加日期(attendtime升序).第几次参加考试(frequency升序):并且,每个用户只保留一条数据(pid). 考试 ...

  5. 福州大学软件工程1916|W班 第6次作业成绩排名

    作业链接 团队第三次-项目原型设计 评分细则 博客评分标准 在随笔开头,备注小组同学的学号.(1') 文字准确.样式清晰.图文并茂.字数在1000字左右.(10') 原型模型必须采用专用的原型模型设计 ...

  6. 福州大学软件工程1916|W班 第3次作业成绩排名

    作业链接 结对第二次-文献摘要热词统计及进阶需求 评分细则 本次作业由三部分组成(程序满分80,博客满分70,工程能力满分30) 程序评分标准 基础需求 共有7个测试用例,每个满分20分并按照一定的映 ...

  7. 福州大学软件工程1816 | W班 第1次作业成绩排名

    1.作业地址 第一次作业--准备篇 2.作业要求 (1)回想一下你初入大学时对计算机专业的畅想 当初你是如何做出选择计算机专业的决定的? 你认为过去两年中接触到的课程是否符合你对计算机专业的期待,为什 ...

  8. 福州大学软件工程1816 | W班 第2次作业成绩排名

    作业链接 词频统计基础功能 评分细则 本次个人项目分数由两部分组成(博客分满分40分+程序得分满分60分) 博客评分规则 在文章开头给出你们Fork仓库的Github项目地址.(1') 在开始实现程序 ...

  9. 福州大学软件工程1816 | W班 第3次作业成绩排名

    写在前面 汇总成绩排名链接 1.作业链接 第三次作业--原型设计(结对第一次) 2.评分准则 本次作业总分 25分,由以下部分组成: (1)在随笔开头请加上该博客链接,以方便阅读时查看作业需求,并备注 ...

随机推荐

  1. python--一起来盖个时间戳!!

    1.datetime import datetime print(datetime.datetime.now()) 2.time import time otherStyleTime = time.s ...

  2. Debug运行项目时报错,connected to the target VM, address: '127.0.0.1:50495', transport: 'socket'

    Debug运行项目时报错,无法进入Debug,猜想出错原因可能是未正确关闭IDEA. 解决方法,先直接运行项目,然后停掉项目,再用Debug模式启动,问题解决.

  3. Python 基础之生成器

    一.生成器表达式 生成器本质是迭代器,允许自定义逻辑的迭代器迭代器和生成器区别:迭代器本身是系统内置的,重写不了.而生成器是用户自定义的,可以重写迭代逻辑生成器可以用来钟方式创建:    (1)生成器 ...

  4. 由前端登录验证,页面跳转,携带headers token引发的思考和尝试

    目录 1 前言 2 我的实现方式与存在的问题 3 我想到的解决方案 3.1 前端跳转时携带headers{'token': token} 不就行了(经验证不可行) 3.2 前端跳转封装请求,携带hea ...

  5. VS2008 error PRJ0002 : 错误的结果 31 (从“C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\rc.exe”返回)。

    解决方案,选择属性->配置属性->清单工具->输入和输出->嵌入清单,把是改成否

  6. Caused by: java.net.ConnectException: Connection timed out: connect

    发生这种情况的原因是:连接的路径发生错误

  7. 前端学习笔记系列一:15vscode汉化、快速复制行、网页背景图有效设置、 dl~dt~dd标签使用

    ctrl+shift+p,调出configure display language,选择en或zh,若没有则选择安装使用其它语言,则直接呼出扩展程序搜索界面,选择,然后安装,重启即可. shift+a ...

  8. Java图形与文本(18)

    实例018  旋转图形 实例说明 本实例演示在Java中绘制图形时,如何对图形进行旋转.运行程序,单击窗体上的“顺时针”按钮,可以将图形顺时针旋转,效果如图1.18所示,用户还可以通过单击“逆时针”和 ...

  9. rapid-generator JAVA代码生成器

    有感于马上要做个比较大的业务系统,想到那无止境的增删改查.粘贴复制,顿时脑后升起一阵凉风.于是想到个找或者写一个Java代码的生成器,这样在正常开发进度下,也能余下更多的时间去做些别的事情. 闲话少说 ...

  10. php 语法错误定位 try catch Throwable

    try { } catch (Exception $ex) {      // 计算错误 }  catch (Throwable $ex) { // 语法错误,致命错误 }   Throwable { ...