读入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. TDB 12c : Transportable Database

    转 http://oracleinaction.com/12c-transportable-database/

  2. Selenium2工作原理

    Selenium 经历了两个版本,Selenium 1.0 和 Selenium 2.0,本文仅介绍Selenium2的原理,在Selenium 2.0 主推的是WebDriver,Selenium2 ...

  3. jsp中提示修改成功

    修改成功提示 servert包 request.setAttribute("success", "修改失败"); 效果而 function f(){ var n ...

  4. vue项目中安装cnpm和node_modules

    1.安装cnpm的nodejs包管理工具,命令行: npm install -g cnpm --registry=https://registry.npm.taobao.org   2. 每个vue项 ...

  5. Retrofit2.0动态url遇到的坑

    1.今天在升级基于RxJava2+Retrofit+RxCache的网络请求封装这套框架的过程中遇到一个问题,当我使用Post动态传入url时,服务器一直返回http404 ,我的请求地址末端是这样的 ...

  6. DeltaFish 选题报告总结

    选题结果:校园物资流动系统 报告地点:3A101 会议时间:16:00 ~ 18:00 与会人员:软工小组全体成员 请假人员:无  缺席人员:无 报告人:陈志锴 一.报告内容总结 1.产品功能 针对校 ...

  7. 使用Jenkins进行android项目的自动构建(5)

    之前在项目中引入的单元测试使用的是JUnit,可以在构建前进行测试,这里在介绍一下使用Instrumentation 进行单元测试.使用Instrumentation进行测试,比之前多一些步骤,需要把 ...

  8. MVC学习(一)

    http://www.cnblogs.com/QLeelulu/archive/2008/09/30/1302462.html

  9. C# 获取文件编码

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...

  10. 使用Intellij IDEA的Bookmarks

    用idea的时候,无意中发现了了一个小功能,叫做BookMark Ctrl+F11按出来的然后去查阅了一下文档,主要功能也就是可以清晰的看到自己标的书签附近的代码,比如我们在第11行按一下F11插入一 ...