首页 > 百科知识 正文

单科成绩排序结构体专题,考试成绩分布分析

时间:2024-03-09 12:00:01 阅读:605 作者:泡沫般梦幻

考试成绩分布分析?有一学生成绩表,包括学号、姓名、3门课程成绩请按要求排序输出:若输入1,则按第1门课成绩降序输出成绩表,若输入为i(1<=i<=3),则按第i门课成绩降序输出成绩表,今天小编就来聊一聊关于考试成绩分布分析?接下来我们就一起去研究一下吧!

单科成绩排序结构体专题,考试成绩分布分析-第1张

考试成绩分布分析

ICPC--1193: 单科成绩排序(结构体专题)题目描述

有一学生成绩表,包括学号、姓名、3门课程成绩。请按要求排序输出:若输入1,则按第1门课成绩降序输出成绩表,若输入为i(1<=i<=3),则按第i门课成绩降序输出成绩表。

输入

首先输入一个整数n(1<=n<=100),表示学生人数; 然后输入n行,每行包含一个学生的信息:学号(12位)、姓名(不含空格且不超过20位),以及3个整数,表示3门课成绩,数据之间用空格隔开。 最后一行输入一个整数i,表示要求按第i门课成绩降序排序输出,若该门课成绩相同,则按学号升序。

输出

输出按第i门课降序排序的结果,格式见样例。

样例输入

3 541207010188 Zhangling 89 78 95 541207010189 Wangli 85 87 99 541207010190 Fangfang 85 68 76 1

样例输出

541207010188 Zhangling 89 78 95 541207010189 Wangli 85 87 99 541207010190 Fangfang 85 68 76

代码

#include<stdio.h> typedef struct xuesheng { char xuehao[13]; char name[20]; int a, b, c; }Student; void sort(Student *s,int num,int (*cmp)(Student s1,Student s2)){ Student temp; for (int i = 0; i < num-1; i ) { for (int j = i 1; j < num; j ) { if (cmp(s[i], s[j])>0){ //这必须>0 strcmp(串1,串2),若串1<串2 ,返回-1 temp = s[i]; //无序对调,返回1对调 s[i] = s[j]; s[j] = temp; } } } } int cmp1(Student s1, Student s2){ if (s1.a!=s2.a) { if (s2.a>s1.a) { return 1; } else{ return 0; } } else{ return strcmp(s1.xuehao,s2.xuehao); } } int cmp2(Student s1, Student s2){ if (s1.b != s2.b) { if (s2.b>s1.b) { return 1; } else{ return 0; } } else{ return strcmp(s1.xuehao, s2.xuehao); } } int cmp3(Student s1, Student s2){ if (s1.c != s2.c) { if (s2.c>s1.c) { return 1; } else{ return 0; } } else{ return strcmp(s1.xuehao, s2.xuehao); } } int main(){ Student s[100], temp; int num,op; scanf("%d",&num); for (int i = 0; i < num; i ) { scanf("%s %s %d %d %d",s[i].xuehao,s[i].name,&s[i].a,&s[i].b,&s[i].c); } scanf("%d",&op); switch (op) { case 1: sort(s,num,cmp1); break; case 2: sort(s,num,cmp2); break; case 3: sort(s,num,cmp3); break; default: break; } for (int i = 0; i < num; i ) { printf("%s %s %d %d %d\n",s[i].xuehao,s[i].name,s[i].a,s[i].b,s[i].c); } return 0; }

ICPC--1194: 总成绩排序(结构体专题)

版权声明:该问答观点仅代表作者本人。如有侵犯您版权权利请告知 cpumjj@hotmail.com,我们将尽快删除相关内容。