成绩排序

时间:2019-02-21
本文章向大家介绍成绩排序,主要包括成绩排序使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

题目描述

查找和排序

题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩
都按先录入排列在前的规则处理。

示例:
jack      70
peter     96
Tom       70
smith     67

从高到低  成绩 
peter     96 
jack      70 
Tom       70 
smith     67

从低到高

smith     67

jack      70 
Tom      70 
peter     96

输入描述:


 

输入多行,先输入要排序的人的个数,然后输入排序方法0(降序)或者1(升序)再分别输入他们的名字和成绩,以一个空格隔开

输出描述:


 

按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开

示例1

输入

复制

3
0
fang 90
yang 50
ning 70

输出

复制

fang 90
ning 70
yang 50
#include <stdio.h>
#include <stdlib.h>
struct STU{
    int score;
    char name[20];
}stu[1001];
int cmp1(const void *a,const void *b){
	struct STU *c=(struct STU*)a;//后面一定要打括号
	struct STU*d=(struct STU*)b;
    return d->score-c->score;
}
int cmp2(const void *a,const void *b){
   	struct STU *c=(struct STU*)a;
	struct STU*d=(struct STU*)b;
    return c->score-d->score;
}
int main(){
    int n,flag,i;
    while(scanf ("%d%d",&n,&flag)!=EOF){
        for(i=0;i<n;i++)
            scanf("%s%d",stu[i].name,&stu[i].score);
        if(flag==0)
            qsort(stu,n,sizeof(stu[0]),cmp1);
        else
            qsort(stu,n,sizeof(stu[0]),cmp2);
        for(i=0;i<n;i++)
           printf("%s %d\n",stu[i].name,stu[i].score);
    }
}