转跳点:

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

  

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

    package com.thinkgem.jeesite.modules.yudengji.web; import java.util.Date; import javax.servlet.http. ...

  2. 单元测试报错:unable to find a @SpringBootConfiguration

    完整异常: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBoo ...

  3. JavaScript一个简单的图片切换布局

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. 初探网络流:dinic/EK算法学习笔记

    前记 这些是初一暑假的事: "都快初二了,连网络流都不会,你好菜啊!!!" from 某机房大佬 to 蒟蒻我. flag:--NOIP后要学网络流 咕咕咕------------ ...

  5. 病毒[POI2000](AC自动机+搜索)

    题目链接:病毒[POI2000] 我们假设已经有一个无限长的串满足要求,那如果我们拿它去匹配会发生什么? 它会一直在Trie树和fail树上转圈,一定经过根节点且不会经过病毒字符串结束的节点. 所以如 ...

  6. 【转载】将Centos的yum源更换为国内的阿里云源

    自己的yum源不知道什么时候给改毁了--搜到了个超简单的方法将yum源更换为阿里的源 完全参考 http://mirrors.aliyun.com/help/centos?spm=5176.bbsr1 ...

  7. 报错google.protobuf.text_format.ParseError: 166:8 : Message type "object_detection.protos.RandomHorizontalFlip" has no field named "i".解决方法

    运行python train.py --logtostderr --train_dir=training/ --pipeline_config_path=training/ssd_mobilenet_ ...

  8. GPU运行Tensorflow的几点建议

    1.在运行之前先查看GPU的使用情况: 指令:nvidia-smi 备注:查看GPU此时的使用情况 或者 指令:watch nvidia-smi 备注:实时返回GPU使用情况 2.指定GPU训练: 方 ...

  9. linux 串口通信 编程详解

    计算机串口的引脚说明 序号 信号名称 符号 流向 功能 3 发送数据 TXD DTE→DCE DTE发送串行数据 2 接收数据 RXD DTE←DCE DTE 接收串行数据 7 请求发送 RTS DT ...

  10. P1250 种树 题解

    题目描述 一条街道的一边有几座房子,因为环保原因居民想要在路边种些树,路边的居民被分割成 n 块,并被编号为 1…n.每块大小为一个单位尺寸并最多可种一棵树.每个居民想在门前种些树并指定了三个数b,e ...