题目描述
根据教育部的规定,大学生进校后符合条件的可申请转专业。在校本科生在完成大学一年级课程,进入二年级之前,符合以下条件之一者,可以申请转专业:(1)在某一学科方面确有特长的学生;(2)因为身体健康原因,经学校指定的医疗单位检查证明不能在原专业学习、但尚能在本校其他专业学习者;(3)通过转专业能有利于学生自主学习成材,且参加学校的选拔,选拔合格者。
转专业需要考试,也需要看大一的成绩,一般是第一年成绩在班级的前10%。吴同学成绩优秀,计算机课程尤其擅长,他向学院提出申请,申请转入计算机科学系。经过考试和面试,计算机科学专业允许他转入。但是,有一个问题需要解决,学校需要将他的C语言成绩纳入新班级管理。已知计算机科学专业n名同学的姓名、高数成绩、物理成绩和C语言成绩,成绩已经按C语言成绩从小到大排好序。将吴同学的成绩纳入后,C语言成绩仍然保持有序。输入
有多行。第1行是一个整数n,表示原班级有n名同学(1<n≤100)。接下来n行,每行包含一个学生信息,依次是姓名(姓名中间无空格,长度不超过20)、高数成绩、物理成绩和C语言成绩。最后一行,是吴同学的姓名、高数成绩、物理成绩和C语言成绩。所有学生三门课的成绩均为整数(0≤成绩≤100)。
输出
有n+1行。对n+1位同学按照计算机成绩升序排序,每个学生信息占一行,学生信息依次是姓名、高数成绩、物理成绩和C语言成绩,保证所有学生的C语言成绩唯一,数据间以一个空格分隔。
样例输入 Copy
4 zhangyang 69 73 56 liping 78 72 75 wangsi 89 85 80 lijichen 75 78 82 wuqiang 89 89 76
样例输出 Copy
zhangyang 69 73 56 liping 78 72 75 wuqiang 89 89 76 wangsi 89 85 80 lijichen 75 78 82
代码实现:
#pragma GCC optimize(2)
#include <bits/stdc++.h>
using namespace std;
typedef struct student
{
char name[24];
int maths;
int physics;
int clanguage;
} STU;
bool cmp(STU a,STU b)
{
return a.clanguage <b.clanguage ;
}
int main()
{
STU s[109];
int n;
cin>>n;
for(int i=1;i<=n+1;i++)
{
cin>>s[i].name >>s[i].maths >>s[i].physics >>s[i].clanguage ;
}
sort(s+1,s+n+2,cmp);
for(int i=1;i<=n+1;i++)
{
cout<<s[i].name <<" "<<s[i].maths <<" "<<s[i].physics <<" "<<s[i].clanguage ;
cout<<"\n";
}
return 0;
}