#include<iostream> #include<stdlib.h> #include<algorithm> #include<string> using namespace std; struct student { string name; int ch; int math; int eng; int science; int sum; }; int comparech(student x,student y) { if(x.ch==y.ch) { return x.name<y.name; } return x.ch>y.ch; } int comparemath(student x,student y) { if(x.math==y.math) { return x.name<y.name; } return x.math>y.math; } int compareeng(student x,student y) { if(x.eng==y.eng) { return x.name<y.name; } return x.eng>y.eng; } int comparesci(student x,student y) { if(x.science==y.science) { return x.name<y.name; } return x.science>y.science; } int comparesum(student x,student y) { if(x.sum==y.sum) { return x.name<y.name; } return x.sum>y.sum; } int main() { int n; cin>>n; student stu[100]; for(int i=0;i<n;i++) { cin>>stu[i].name; cin>>stu[i].ch; cin>>stu[i].math; cin>>stu[i].eng; cin>>stu[i].science; stu[i].sum=(stu[i].ch+stu[i].eng+stu[i].math+stu[i].science)/4; } sort(stu,stu+n,comparech); int i=0; for(i=0;i<4;i++) { cout<<stu[i].name; if(i<3) { cout<<" "; } } cout<<endl; sort(stu,stu+n,comparemath); for(i=0;i<4;i++) { cout<<stu[i].name; if(i<3) { cout<<" "; } } cout<<endl; sort(stu,stu+n,compareeng); for(i=0;i<4;i++) { cout<<stu[i].name; if(i<3) { cout<<" "; } } cout<<endl; sort(stu,stu+n,comparesci); for(i=0;i<4;i++) { cout<<stu[i].name; if(i<3) { cout<<" "; } } cout<<endl; sort(stu,stu+n,comparesum); for(i=0;i<4;i++) { cout<<stu[i].name; if(i<3) { cout<<" "; } } cout<<endl; system("pause"); return 0; }
时间: 2024-01-16 19:02:38 浏览: 104
#include <iostream>
这是一段使用C++实现的成绩排序程序,可以对学生的语文、数学、英语、科学四门课程的成绩进行排序,并输出前四名学生的姓名。
程序使用了结构体来存储学生的信息,其中包括姓名、语文、数学、英语、科学四门课程的成绩以及总成绩。使用了sort()函数对结构体数组进行排序,同时定义了不同的比较函数来实现按不同的成绩进行排序。
程序的输入格式为:第一行为学生数量,接下来每行依次为学生的姓名、语文成绩、数学成绩、英语成绩、科学成绩。输出前四名学生的姓名,每行输出一个排序结果。
需要注意的是,程序中使用了system("pause")语句,这是为了在Windows命令行窗口中暂停程序的运行,以便查看程序输出结果。在其他环境中运行程序时,可能需要将该语句注释掉或删除。
阅读全文