天勤OJ 题目1371: 成绩排序

题目描述
从键盘输入4 个学生的数据(包括姓名、年龄和成绩),按成绩从高到底排序,并输出其中成绩次高者的所有数据。

 

输入

 输入4行,每一行表示一个学生的数据,分别表示 姓名、年龄和成绩。

 

输出

 输出4行,表示排序后的结果,格式参见样例。

 

样例输入
aa 10 90
bb 20 100
cc 18 98
dd 19 93
 

样例输出
bb 20 100
cc 18 98
dd 19 93
aa 10 90
 

提示 [+]

*** 提示已隐藏,点击上方 [+] 可显示 ***

 

来源

北京理工大学计算机专业2000年研究生复试上机试题

 
/*********************************
*   日期:2013-2-14
*   作者:SJF0115
*   题号: 天勤OJ 题目1371: 成绩排序
*   来源:http://acmclub.com/problem.php?id=1371
*   结果:AC
*   来源:北京理工大学计算机专业2000年研究生复试上机试题
*   总结:
**********************************/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

typedef struct Student
{
	char name[50];//姓名
	int age;//年龄
	int grade;//成绩
}Student;

Student student[5];
//排序函数
int cmp(const void *a,const void *b){
	struct Student *c = (Student *)a;
	struct Student *d = (Student *)b;
	return d->grade - c->grade;
}
int main()
{
	int i;
	//输入
    for(i = 0;i < 4;i++){
		scanf("%s %d %d",student[i].name,&student[i].age,&student[i].grade);
	}
	//排序
	qsort(student,4,sizeof(student[0]),cmp);
	//输出
	for(i = 0;i < 4;i++){
		printf("%s %d %d\n",student[i].name,student[i].age,student[i].grade);
	}
    return 0;
}


你可能感兴趣的:(北理)