读入n名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。

输入格式:每个测试输入包含1个测试用例,格式为

  第1行:正整数n
第2行:第1个学生的姓名 学号 成绩
第3行:第2个学生的姓名 学号 成绩
... ... ...
第n+1行:第n个学生的姓名 学号 成绩

其中姓名和学号均为不超过10个字符的字符串,成绩为0到100之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。

输出格式:对每个测试用例输出2行,第1行是成绩最高学生的姓名和学号,第2行是成绩最低学生的姓名和学号,字符串间有1空格。

输入样例:

3
Joe Math990112 89
Mike CS991301 100
Mary EE990830 95

输出样例:

Mike CS991301
Joe Math990112

解题思路:qsort是C语言自带的快速排序函数,使用qsort速度上会快很多

 #include<stdio.h>
#include<stdlib.h> typedef struct Student{
char name[];
char num[];
int score;
}Student;
Student student[]; int cmp( const void *a,const void *b)
{ Student *c=(Student*)a;
Student *d=(Student*)b;
return d->score-c->score; //从大到小排序
// return c->score-d->score; //从小到大排序
} int main()
{
int n,flag;
int i;
scanf("%d",&n);
for( i=; i<n; i++)
scanf("%s %s %d",student[i].name,student[i].num,&student[i].score);
qsort( student,n,sizeof(student[]),cmp);
printf("%s %s\n",student[].name,student[].num);
printf("%s %s\n",student[n-].name,student[n-].num);
return ;
}

以上是题目的解,是结构体的,下面再补充几个算法

对整型进行排序

 #include<stdio.h>
#include<stdlib.h> int cmp( const void *a,const void *b)
{ return *(int *)a - *(int *)b; //从小到大排序
} int main()
{
int n;
int i;
int student[];
scanf("%d",&n);
for( i=; i<n; i++)
scanf("%d",&student[i]);
qsort( student,n,sizeof(student[]),cmp);
printf("%d\n",student[]);
printf("%d\n",student[n-]);
return ;
}

对结构体二级排序 

 struct In
{
int x;
int y;
} s[]; //按照x从小到大排序,当x相等时按照y从大到小排序 int cmp( const void *a, const void *b )
{
struct In *c = (In *)a;
struct In *d = (In *)b;
if(c->x != d->x) return c->x - d->x;
else return d->y - c->y;
} qsort(s,,sizeof(s[]),cmp);

对字符串进行排序 

 struct In
{
int data;
char str[];
} s[]; //按照结构体中字符串str的字典顺序排序 int cmp ( const void *a, const void *b )
{
return strcmp( (*(In *)a)->str, (*(In *)B)->str );
} qsort(s,,sizeof(s[]),cmp);

对double型进行排序(double型要用三目运算符,不能像int那样直接相减)

 double in[];

 int cmp( const void *a , const void *b )
{
return *(double *)a > *(double *)b ? : -;
} qsort(in,,sizeof(in[]),cmp);

1004. 成绩排名 (20) (快速排序qsort函数的使用问题)的更多相关文章

  1. 【PAT】1004. 成绩排名 (20)

    1004. 成绩排名 (20) 读入n名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式:每个测试输入包含1个测试用例,格式为 第1行:正整数n 第2行:第1个学生的姓名 ...

  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. [C++]PAT乙级1004. 成绩排名 (20/20)

    /* 1004. 成绩排名 (20) 读入n名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式:每个测试输入包含1个测试用例,格式为 第1行:正整数n 第2行:第1个学生 ...

  5. PAT 1004 成绩排名 (20)(代码)

    1004 成绩排名 (20)(20 分) 读入n名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式:每个测试输入包含1个测试用例,格式为\ 第1行:正整数n 第2行:第1 ...

  6. PATB 1004 成绩排名 (20)

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

  7. PAT (Basic Level) Practise (中文)- 1004. 成绩排名 (20)

    http://www.patest.cn/contests/pat-b-practise/1004 读入n名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式:每个测试输入 ...

  8. PAT 1004. 成绩排名 (20)

    读入n名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式:每个测试输入包含1个测试用例,格式为 第1行:正整数n 第2行:第1个学生的姓名 学号 成绩 第3行:第2个学生 ...

  9. PAT 1004. 成绩排名 (20) JAVA

    读入n名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式:每个测试输入包含1个测试用例,格式为 第1行:正整数n 第2行:第1个学生的姓名 学号 成绩 第3行:第2个学生 ...

随机推荐

  1. 递推DP UVA 473 Raucous Rockers

    题目传送门 题意:n首个按照给定顺序存在m张光盘里,每首歌有播放时间ti,并且只能完整的存在一张光盘里,问最多能存几首歌 分析:类似01背包和完全背包,每首歌可存可不存,存到下一张光盘的情况是当前存不 ...

  2. 使用dubbox开发REST应用

    新建项目,添加Maven支持. 在pom.xml中添加依赖. <dependency> <groupId>org.jboss.resteasy</groupId> ...

  3. android将对象序列化到文件:直接写文件与用Serializable接口的对比

    1.用文件读写1024个对象的日志 10-09 16:12:44.493 6385-6385/com.example.tt.downtest D/Serializable_TAG: write 102 ...

  4. CoreText的绘制流程-转

    来自:http://blog.sina.com.cn/s/blog_7c8dc2d50101lbb1.html 使用coreText进行文本绘制,需要在工程中添加CoreText.framework, ...

  5. 450 Delete Node in a BST 删除二叉搜索树中的结点

    详见:https://leetcode.com/problems/delete-node-in-a-bst/description/ C++: /** * Definition for a binar ...

  6. C. Two strings 二分 + 预处理

    http://codeforces.com/contest/762/problem/C 第一个串str[],第二个sub[] 预处理出prefix[i]表示sub的前i位和str[]的最长lcs去到s ...

  7. Node.js搭建静态服务器

    let http = require('http'); let url = require('url'); let fs = require('fs'); let path = require('pa ...

  8. struts2 <allowed-methods > 标签配置

    1.在struts2   2.5版本中添加了对方法访问的权限,如果没有被添加到<allow-method> 方法的标签,将会报一下错误 5:05:18.078 [http-apr-8020 ...

  9. Java语法基础-static关键字

    static关键字说明 “static方法就是没有this的方法.在static方法内部不能调用非静态方法,反过来是可以的.而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法.这 ...

  10. H.264学习笔记2——帧内预测

    帧内预测:根据经过反量化和反变换(没有进行去块效应)之后的同一条带内的块进行预测. A.4x4亮度块预测: 用到的像素和预测方向如图: a~f是4x4块中要预测的像素值,A~Q是临块中解码后的参考值. ...