转跳点:

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

  

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

    DAC的功能:可以输出电压(无触发,设置DAC转换值,DAC使能更新寄存器和启动转换)或者波形(连续转换,用DMA发送数据,定时器触发).首先有个正弦波波形的数组,内存到DAC的DMA通道不断的将正弦 ...

  2. 常见Linux发行版有哪些?

    Linux 发行版(英语:Linux distribution,也被叫做GNU/Linux 发行版),为一般用户预先集成好的Linux操作系统及各种应用软件.一般用户不需要重新编译,在直接安装之后,只 ...

  3. Atcoder Beginning Contest 134E(二分查找(upper_bound),思维)

    #include<bits/stdc++.h>using namespace std;int a[100007],f[100007],ans,n;int main(){ cin>&g ...

  4. 记录—JPA生成数据库表

    环境 springBoot+JPA+MySQL application-dev.yml 注意:配置中的blog数据库需要先创建,否则启动springBoot会报错 spring: #数据库连接配置 d ...

  5. Hive的存储和MapReduce处理——数据清洗(Part3)

    日期:2019.11.17 博客期:118 星期日 这几天在写程序的时候虚拟机崩了,无语~所以重新从最初的状态开始配环境,重新整理之前的所有代码程序.

  6. 本周总结(19年暑假)—— Part6

    日期:2019.8.18 博客期:112 星期日

  7. 【快学springboot】13.操作redis之String数据结构

    前言 在之前的文章中,讲解了使用redis解决集群环境session共享的问题[快学springboot]11.整合redis实现session共享,这里已经引入了redis相关的依赖,并且通过spr ...

  8. C++ 类构造函数 & 析构函数

    前言: 析构函数和构造函数是一对.构造函数用于创建对象,而析构函数是用来撤销对象.简单的说:一个对象出生的时候,使用构造函数,死掉的时候,使用析构函数.构造函数 和 析构函数 各有各的用途,在构造函数 ...

  9. 二 Mybatis架构&MybatisDao的两种开发方式(原始Dao,接口动态代理)

    MyBatis架构图 三个对象: SqlSessionFactoryBuilder.SqlSessionFactory.SqlSession SqlSessionFactoryBuilder:主要用来 ...

  10. Java多线程信号量同步类CountDownLatch与Semaphore

    信号量同步是指在不同线程之间,通过传递同步信号量来协调线程执行的先后次序.CountDownLatch是基于时间维度的Semaphore则是基于信号维度的. 1:基于执行时间的同步类CountDown ...